Hamlib  4.5~git
rig.h
Go to the documentation of this file.
1 /*
2  * Hamlib Interface - API header
3  * Copyright (c) 2000-2003 by Frank Singleton
4  * Copyright (c) 2000-2012 by Stephane Fillod
5  *
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  *
21  */
22 
23 
24 #ifndef _RIG_H
25 #define _RIG_H 1
26 
27 #define TRACE rig_debug(RIG_DEBUG_TRACE,"%s(%d) trace\n", __FILE__, __LINE__)
28 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
29 
30 #include <stdio.h>
31 #include <stdarg.h>
32 #include <string.h>
33 #include <inttypes.h>
34 #include <time.h>
35 #include <sys/time.h>
36 
37 /* Rig list is in a separate file so as not to mess up w/ this one */
38 #include <hamlib/riglist.h>
39 
53 /* __BEGIN_DECLS should be used at the beginning of your declarations,
54  * so that C++ compilers don't mangle their names. Use __END_DECLS at
55  * the end of C declarations. */
57 #undef __BEGIN_DECLS
58 #undef __END_DECLS
59 #ifdef __cplusplus
60 # define __BEGIN_DECLS extern "C" {
61 # define __END_DECLS }
62 #else
63 # define __BEGIN_DECLS /* empty */
64 # define __END_DECLS /* empty */
65 #endif
67 
68 /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers
69  * that don't understand ANSI C prototypes still work, and ANSI C
70  * compilers can issue warnings about type mismatches. */
72 #undef HAMLIB_PARAMS
73 #if defined (__STDC__) \
74  || defined (_AIX) \
75  || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
76  || defined(__CYGWIN__) \
77  || defined(_WIN32) \
78  || defined(__cplusplus)
79 # define HAMLIB_PARAMS(protos) protos
80 # define rig_ptr_t void *
81 # define amp_ptr_t void *
82 #else
83 # define HAMLIB_PARAMS(protos) ()
84 # define rig_ptr_t char *
85 # define amp_ptr_t char *
86 #endif
88 
89 #include <hamlib/rig_dll.h>
90 
91 #ifndef SWIGLUA
93 #define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
95 #else
96 /* SWIG's older Lua generator doesn't grok ull due to Lua using a
97  double-precision floating point type internally for number
98  representations (max 53 bits of precision) so makes a string
99  constant from a constant number literal using ull */
100 // #define CONSTANT_64BIT_FLAG(BIT) (1 << (BIT))
101 // #define SWIGLUAHIDE
102 /* But this appears to have been fixed so we'll use the correct one now
103  If you have the older version of SWIG comment out this line and use
104  the two above */
105 // This 1ul definition works on swig 4.0.1 and lua 5.3.5
106 #define CONSTANT_64BIT_FLAG(BIT) (1ul << (BIT))
107 #endif
108 
109 __BEGIN_DECLS
110 
115 // cookie is 26-char time code plus 10-char (2^31-1) random number
116 #define HAMLIB_COOKIE_SIZE 37
117 extern int cookie_use; // this is global as once one client requests it everybody needs to honor it
118 
120 extern HAMLIB_EXPORT_VAR(const char) hamlib_version[];
121 extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[];
122 extern HAMLIB_EXPORT_VAR(const char *) hamlib_version2;
123 extern HAMLIB_EXPORT_VAR(const char *) hamlib_copyright2;
125 
133  RIG_OK = 0,
152 };
153 
159 #define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \
160  || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \
161  || errcode == RIG_EVFO || errcode == RIG_EDOM)
162 
166 #define NETRIGCTL_RET "RPRT "
167 
168 
184 };
185 
186 
187 /* --------------- Rig capabilities -----------------*/
188 
189 /* Forward struct references */
190 
191 struct rig;
192 struct rig_state;
193 
197 typedef struct s_rig RIG;
198 
200 #define HAMLIB_RIGNAMSIZ 30
201 #define HAMLIB_RIGVERSIZ 8
202 #define HAMLIB_FILPATHLEN 512
203 #define HAMLIB_FRQRANGESIZ 30
204 #define HAMLIB_MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */
205 #define HAMLIB_TSLSTSIZ 20 /* max tuning step list size, zero ended */
206 #define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */
207 #define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */
208 #define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */
209 #define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */
210 #define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */
211 #define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */
212 #define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */
213 #define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */
214 #define HAMLIB_MAX_SPECTRUM_DATA 2048 /* max number of data bytes in a single spectrum line */
215 #define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */
216 #define HAMLIB_MAX_MODES 63
217 #define HAMLIB_MAX_VFOS 31
218 #define HAMLIB_MAX_ROTORS 63
219 #define HAMLIB_MAX_VFO_OPS 31
220 #define HAMLIB_MAX_RSCANS 31
221 #define HAMLIB_MAX_SNAPSHOT_PACKET_SIZE 16384 /* maximum number of bytes in a UDP snapshot packet */
223 
224 
235 #define CTCSS_LIST_SIZE 60
236 #define DCS_LIST_SIZE 128
237 typedef unsigned int tone_t;
238 
239 
243 typedef enum rig_port_e {
259 
260 
270 };
271 
272 
280 };
281 
282 
290 };
291 
292 
296 typedef enum {
297  RIG_FLAG_RECEIVER = (1 << 1),
298  RIG_FLAG_TRANSMITTER = (1 << 2),
299  RIG_FLAG_SCANNER = (1 << 3),
300  RIG_FLAG_MOBILE = (1 << 4),
301  RIG_FLAG_HANDHELD = (1 << 5),
302  RIG_FLAG_COMPUTER = (1 << 6),
303  RIG_FLAG_TRUNKING = (1 << 7),
304  RIG_FLAG_APRS = (1 << 8),
305  RIG_FLAG_TNC = (1 << 9),
306  RIG_FLAG_DXCLUSTER = (1 << 10),
307  RIG_FLAG_TUNER = (1 << 11)
309 
313 /* TODO: kill me, and replace by real AGC delay */
315  RIG_AGC_OFF = 0,
316  RIG_AGC_SUPERFAST,
317  RIG_AGC_FAST,
318  RIG_AGC_SLOW,
320  RIG_AGC_MEDIUM,
321  RIG_AGC_AUTO
322 };
323 
324 
326 #define RIG_FLAG_TRANSCEIVER (RIG_FLAG_RECEIVER|RIG_FLAG_TRANSMITTER)
327 #define RIG_TYPE_MASK (RIG_FLAG_TRANSCEIVER|RIG_FLAG_SCANNER|RIG_FLAG_MOBILE|RIG_FLAG_HANDHELD|RIG_FLAG_COMPUTER|RIG_FLAG_TRUNKING|RIG_FLAG_TUNER)
328 
329 #define RIG_TYPE_OTHER 0
330 #define RIG_TYPE_TRANSCEIVER RIG_FLAG_TRANSCEIVER
331 #define RIG_TYPE_HANDHELD (RIG_FLAG_TRANSCEIVER|RIG_FLAG_HANDHELD)
332 #define RIG_TYPE_MOBILE (RIG_FLAG_TRANSCEIVER|RIG_FLAG_MOBILE)
333 #define RIG_TYPE_RECEIVER RIG_FLAG_RECEIVER
334 #define RIG_TYPE_PCRECEIVER (RIG_FLAG_COMPUTER|RIG_FLAG_RECEIVER)
335 #define RIG_TYPE_SCANNER (RIG_FLAG_SCANNER|RIG_FLAG_RECEIVER)
336 #define RIG_TYPE_TRUNKSCANNER (RIG_TYPE_SCANNER|RIG_FLAG_TRUNKING)
337 #define RIG_TYPE_COMPUTER (RIG_FLAG_TRANSCEIVER|RIG_FLAG_COMPUTER)
338 #define RIG_TYPE_TUNER RIG_FLAG_TUNER
340 
341 
351  /* RIG_STATUS_NEW * *!< Initial release of code
352  * !! Use of RIG_STATUS_NEW is deprecated. Do not use it anymore */
353 };
354 
359 #define RIG_STATUS_NEW RIG_STATUS_UNTESTED
360 
361 
365 typedef enum {
370 
371 
375 typedef enum {
377  RIG_SPLIT_ON
379 
380 
386 typedef double freq_t;
387 
391 #define PRIfreq ".0f"
392 
396 #define SCNfreq "lf"
400 #define FREQFMT SCNfreq
401 
402 
408 typedef signed long shortfreq_t;
409 
411 #define Hz(f) ((freq_t)(f))
413 #define kHz(f) ((freq_t)((f)*(freq_t)1000))
415 #define MHz(f) ((freq_t)((f)*(freq_t)1000000))
417 #define GHz(f) ((freq_t)((f)*(freq_t)1000000000))
418 
420 #define s_Hz(f) ((shortfreq_t)(f))
422 #define s_kHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000))
424 #define s_MHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000))
426 #define s_GHz(f) ((shortfreq_t)((f)*(shortfreq_t)1000000000))
427 
429 #define RIG_FREQ_NONE Hz(0)
430 
431 
446 typedef unsigned int vfo_t;
447 
450 #define RIG_VFO_N(n) (1u<<(n))
451 
453 #define RIG_VFO_NONE 0
454 
456 #define RIG_VFO_A RIG_VFO_N(0)
457 
459 #define RIG_VFO_B RIG_VFO_N(1)
460 
462 #define RIG_VFO_C RIG_VFO_N(2)
463 
464 // Any addition VFOS need to go from 3-20
465 // To maintain backward compatibility these values cannot change
466 
468 #define RIG_VFO_SUB_A RIG_VFO_N(21)
469 
471 #define RIG_VFO_SUB_B RIG_VFO_N(22)
472 
474 #define RIG_VFO_SUB_C RIG_VFO_N(3)
475 
477 #define RIG_VFO_MAIN_A RIG_VFO_N(23)
478 
480 #define RIG_VFO_MAIN_B RIG_VFO_N(24)
481 
483 #define RIG_VFO_MAIN_C RIG_VFO_N(4)
484 
486 #define RIG_VFO_OTHER RIG_VFO_N(5)
487 
489 #define RIG_VFO_SUB RIG_VFO_N(25)
490 
492 #define RIG_VFO_MAIN RIG_VFO_N(26)
493 
495 #define RIG_VFO_VFO RIG_VFO_N(27)
496 
498 #define RIG_VFO_MEM RIG_VFO_N(28)
499 
501 #define RIG_VFO_CURR RIG_VFO_N(29)
502 
504 #define RIG_VFO_TX_FLAG RIG_VFO_N(30)
505 
507 #define RIG_VFO_ALL RIG_VFO_N(31)
508 
509 // we can also use RIG_VFO_N(31) if needed
510 
511 // Misc VFO Macros
512 
514 #define RIG_VFO_TX_VFO(v) ((v)|RIG_VFO_TX_FLAG)
515 
517 #define RIG_VFO_TX RIG_VFO_TX_VFO(RIG_VFO_CURR)
518 
520 #define RIG_VFO_RX RIG_VFO_CURR
521 
522 
523 /*
524  * targetable bitfields, for internal use.
525  * In rig.c lack of a flag will case a VFO change if needed
526  * So setting this flag will mean the backend handles any VFO needs
527  * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping
528  */
530 #define RIG_TARGETABLE_NONE 0
531 #define RIG_TARGETABLE_FREQ (1<<0)
532 #define RIG_TARGETABLE_MODE (1<<1) // mode by vfo or same mode on both vfos
533 #define RIG_TARGETABLE_PURE (1<<2) // deprecated -- not used -- reuse it
534 #define RIG_TARGETABLE_TONE (1<<3)
535 #define RIG_TARGETABLE_FUNC (1<<4)
536 #define RIG_TARGETABLE_LEVEL (1<<5)
537 #define RIG_TARGETABLE_RITXIT (1<<6)
538 #define RIG_TARGETABLE_PTT (1<<7)
539 #define RIG_TARGETABLE_MEM (1<<8)
540 #define RIG_TARGETABLE_BANK (1<<9)
541 #define RIG_TARGETABLE_ANT (1<<10)
542 #define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO
543 #define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO
544 #define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK)
545 #define RIG_TARGETABLE_ALL 0x7fffffff
547 //
548 //
549 // Newer Icoms like the 9700 and 910 have VFOA/B on both Main & Sub
550 // Compared to older rigs which have one or the other
551 // So we need to distinguish between them
553 #define VFO_HAS_A_B ((rig->state.vfo_list & (RIG_VFO_A|RIG_VFO_B)) == (RIG_VFO_A|RIG_VFO_B))
554 #define VFO_HAS_MAIN_SUB ((rig->state.vfo_list & (RIG_VFO_MAIN|RIG_VFO_SUB)) == (RIG_VFO_MAIN|RIG_VFO_SUB))
555 #define VFO_HAS_MAIN_SUB_ONLY ((!VFO_HAS_A_B) & VFO_HAS_MAIN_SUB)
556 #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB)
557 #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB))
558 #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B)
559 #define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL) == VFO_DUAL)
561 
566 #define RIG_PASSBAND_NORMAL s_Hz(0)
567 
571 #define RIG_PASSBAND_NOCHANGE s_Hz(-1)
572 
578 
579 
583 typedef enum dcd_e {
585  RIG_DCD_ON
587 
588 
594 typedef enum {
604 } dcd_type_t;
605 
606 
610 typedef enum {
616 
617 
623 typedef enum {
633 } ptt_type_t;
634 
635 
639 typedef enum {
641  RIG_POWER_ON = (1 << 0),
642  RIG_POWER_STANDBY = (1 << 1),
643  RIG_POWER_OPERATE = (1 << 2),
644  RIG_POWER_UNKNOWN = (1 << 3)
646 
647 
651 typedef enum {
653  RIG_RESET_SOFT = (1 << 0),
654  RIG_RESET_VFO = (1 << 1),
655  RIG_RESET_MCALL = (1 << 2),
656  RIG_RESET_MASTER = (1 << 3)
658 
659 
675 typedef enum {
677  RIG_OP_CPY = (1 << 0),
678  RIG_OP_XCHG = (1 << 1),
679  RIG_OP_FROM_VFO = (1 << 2),
680  RIG_OP_TO_VFO = (1 << 3),
681  RIG_OP_MCL = (1 << 4),
682  RIG_OP_UP = (1 << 5),
683  RIG_OP_DOWN = (1 << 6),
684  RIG_OP_BAND_UP = (1 << 7),
685  RIG_OP_BAND_DOWN = (1 << 8),
686  RIG_OP_LEFT = (1 << 9),
687  RIG_OP_RIGHT = (1 << 10),
688  RIG_OP_TUNE = (1 << 11),
689  RIG_OP_TOGGLE = (1 << 12)
691 
692 
701 typedef enum {
703  RIG_SCAN_MEM = (1 << 0),
704  RIG_SCAN_SLCT = (1 << 1),
705  RIG_SCAN_PRIO = (1 << 2),
706  RIG_SCAN_PROG = (1 << 3),
707  RIG_SCAN_DELTA = (1 << 4),
708  RIG_SCAN_VFO = (1 << 5),
709  RIG_SCAN_PLT = (1 << 6),
710  RIG_SCAN_STOP = (1 << 7)
712 
713 
717 typedef long token_t;
718 
719 
721 #define RIG_CONF_END 0
723 
724 
738 /* strongly inspired from soundmodem. Thanks Thomas! */
746 };
747 
749 #define RIG_COMBO_MAX 16
750 #define RIG_BIN_MAX 80
752 
756 struct confparams {
758  const char *name;
759  const char *label;
760  const char *tooltip;
761  const char *dflt;
762  enum rig_conf_e type;
763  union {
764  struct {
765  float min;
766  float max;
767  float step;
768  } n;
769  struct {
770  const char *combostr[RIG_COMBO_MAX];
771  } c;
772  } u;
773 };
774 
775 
781 typedef enum {
784  RIG_ANN_FREQ = (1 << 0),
785  RIG_ANN_RXMODE = (1 << 1),
786  RIG_ANN_CW = (1 << 2),
787  RIG_ANN_ENG = (1 << 3),
788  RIG_ANN_JAP = (1 << 4)
790 
791 
838 typedef unsigned int ant_t;
839 
840 #define RIG_ANT_NONE 0
841 #define RIG_ANT_N(n) ((ant_t)1<<(n))
842 #define RIG_ANT_1 RIG_ANT_N(0)
843 #define RIG_ANT_2 RIG_ANT_N(1)
844 #define RIG_ANT_3 RIG_ANT_N(2)
845 #define RIG_ANT_4 RIG_ANT_N(3)
846 #define RIG_ANT_5 RIG_ANT_N(4)
847 
848 #define RIG_ANT_UNKNOWN RIG_ANT_N(30)
849 #define RIG_ANT_CURR RIG_ANT_N(31)
850 
851 #define RIG_ANT_MAX 32
852 
853 
855 #define RIG_AGC_LAST RIG_AGC_AUTO
857 
862  RIG_METER_NONE = 0, /*< No display meter */
863  RIG_METER_SWR = (1 << 0), /*< Stationary Wave Ratio */
864  RIG_METER_COMP = (1 << 1), /*< Compression level */
865  RIG_METER_ALC = (1 << 2), /*< ALC */
866  RIG_METER_IC = (1 << 3), /*< IC */
867  RIG_METER_DB = (1 << 4), /*< DB */
868  RIG_METER_PO = (1 << 5), /*< Power Out */
869  RIG_METER_VDD = (1 << 6), /*< Final Amp Voltage */
870  RIG_METER_TEMP = (1 << 7) /*< Final Amp Voltage */
871 };
872 
873 
879 typedef union {
880  signed int i;
881  float f;
882  char *s;
883  const char *cs;
885  struct {
886  int l;
887  unsigned char *d; /* Pointer to data buffer */
888  } b;
890 } value_t;
891 
892 
901 typedef uint64_t rig_level_e;
902 #define RIG_LEVEL_NONE 0
903 #define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0)
904 #define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1)
905 #define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2)
906 #define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3)
907 #define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4)
908 #define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5)
909 #define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6)
910 #define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7)
911 #define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8)
912 #define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9)
913 #define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10)
914 #define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11)
915 #define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12)
916 #define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13)
917 #define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14)
918 #define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15)
919 #define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16)
920 #define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17)
921 #define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18)
922 #define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19)
923 #define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20)
924 #define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21)
925 #define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22)
926 #define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23)
927 #define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24)
928 #define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25)
931 #define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26)
932 //#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
933 #define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28)
934 #define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29)
935 #define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30)
936  /* RIG_LEVEL_BWC (1<<31) */
937 #define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32)
938 #define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33)
939 #define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34)
940 #define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35)
942 #define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36)
943 #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37)
944 #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38)
945 #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39)
946 #define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40)
947 #define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41)
948 #define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42)
949 #define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43)
950 #define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44)
951 #define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45)
952 #define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46)
953 #define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47)
954 #define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48)
955 #define RIG_LEVEL_48 CONSTANT_64BIT_FLAG(48)
956 #define RIG_LEVEL_49 CONSTANT_64BIT_FLAG(49)
957 #define RIG_LEVEL_50 CONSTANT_64BIT_FLAG(50)
958 #define RIG_LEVEL_51 CONSTANT_64BIT_FLAG(51)
959 #define RIG_LEVEL_52 CONSTANT_64BIT_FLAG(52)
960 #define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53)
961 #define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54)
962 #define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55)
963 #define RIG_LEVEL_56 CONSTANT_64BIT_FLAG(56)
964 #define RIG_LEVEL_57 CONSTANT_64BIT_FLAG(57)
965 #define RIG_LEVEL_58 CONSTANT_64BIT_FLAG(58)
966 #define RIG_LEVEL_59 CONSTANT_64BIT_FLAG(59)
967 #define RIG_LEVEL_60 CONSTANT_64BIT_FLAG(60)
968 #define RIG_LEVEL_61 CONSTANT_64BIT_FLAG(61)
969 #define RIG_LEVEL_62 CONSTANT_64BIT_FLAG(62)
970 #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63)
973 #define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_REF)
974 
975 #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER)
976 
977 #define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
978 #define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
980 
981 
992  RIG_PARM_ANN = (1 << 0),
993  RIG_PARM_APO = (1 << 1),
994  RIG_PARM_BACKLIGHT = (1 << 2),
995  RIG_PARM_BEEP = (1 << 4),
996  RIG_PARM_TIME = (1 << 5),
997  RIG_PARM_BAT = (1 << 6),
998  RIG_PARM_KEYLIGHT = (1 << 7),
999  RIG_PARM_SCREENSAVER = (1 << 8)
1000 };
1001 
1010 enum cookie_e {
1014 };
1015 
1021  RIG_MULTICAST_POLL, // hamlib will be polling the rig for all rig items
1022  RIG_MULTICAST_TRANSCEIVE, // transceive will be turned on and processed
1023  RIG_MULTICAST_SPECTRUM // spectrum data will be included
1024 };
1025 
1027 #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT|RIG_PARM_KEYLIGHT)
1028 #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT)
1029 
1030 #define RIG_PARM_IS_FLOAT(l) ((l)&RIG_PARM_FLOAT_LIST)
1031 #define RIG_PARM_SET(l) ((l)&~RIG_PARM_READONLY_LIST)
1033 
1040 typedef uint64_t setting_t;
1041 
1046 #define RIG_SETTING_MAX 64
1047 
1064 #define RIG_TRN_OFF 0
1065 #define RIG_TRN_RIG 1
1066 #define RIG_TRN_POLL 2
1067 
1068 
1077 /*
1078  * The C standard dictates that an enum constant is a 32 bit signed integer.
1079  * Setting a constant's bit 31 created a negative value that on amd64 had the
1080  * upper 32 bits set as well when assigned to the misc.c:rig_func_str structure.
1081  * This caused misc.c:rig_strfunc() to fail its comparison for RIG_FUNC_XIT
1082  * on amd64 (x86_64). To use bit 31 as an unsigned long, preprocessor macros
1083  * have been used instead as a 'const unsigned long' which cannot be used to
1084  * initialize the rig_func_str.func members. TNX KA6MAL, AC6SL. - N0NB
1085  */
1086 #define RIG_FUNC_NONE 0
1087 #define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0)
1088 #define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1)
1089 #define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2)
1090 #define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3)
1091 #define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4)
1092 #define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5)
1093 #define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6)
1094 #define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7)
1095 #define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8)
1096 #define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9)
1097 #define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10)
1098 #define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11)
1099 #define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12)
1100 #define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13)
1101 #define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14)
1102 #define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15)
1103 #define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16)
1104 #define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17)
1105 #define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18)
1106 #define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19)
1107 #define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20)
1108 #define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21)
1109 #define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22)
1110 #define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23)
1111 #define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24)
1112 #define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25)
1113 #define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26)
1114 #define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27)
1115 #define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28)
1116 #define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29)
1117 #define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30)
1118 #define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31)
1119 #ifndef SWIGLUAHIDE
1120 /* Hide the top 32 bits from the old Lua binding as they can't be represented */
1121 #define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32)
1122 #define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33)
1123 #define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34)
1124 #define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35)
1125 #define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36)
1126 #define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37)
1127 #define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38)
1128 #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39)
1129 #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40)
1130 #define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41)
1131 #define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42)
1132 #define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43)
1133 #define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44)
1134 #define RIG_FUNC_SEND_MORSE CONSTANT_64BIT_FLAG (45)
1135 #define RIG_FUNC_SEND_VOICE_MEM CONSTANT_64BIT_FLAG (46)
1136 #define RIG_FUNC_BIT47 CONSTANT_64BIT_FLAG (47)
1137 #define RIG_FUNC_BIT48 CONSTANT_64BIT_FLAG (48)
1138 #define RIG_FUNC_BIT49 CONSTANT_64BIT_FLAG (49)
1139 #define RIG_FUNC_BIT50 CONSTANT_64BIT_FLAG (50)
1140 #define RIG_FUNC_BIT51 CONSTANT_64BIT_FLAG (51)
1141 #define RIG_FUNC_BIT52 CONSTANT_64BIT_FLAG (52)
1142 #define RIG_FUNC_BIT53 CONSTANT_64BIT_FLAG (53)
1143 #define RIG_FUNC_BIT54 CONSTANT_64BIT_FLAG (54)
1144 #define RIG_FUNC_BIT55 CONSTANT_64BIT_FLAG (55)
1145 #define RIG_FUNC_BIT56 CONSTANT_64BIT_FLAG (56)
1146 #define RIG_FUNC_BIT57 CONSTANT_64BIT_FLAG (57)
1147 #define RIG_FUNC_BIT58 CONSTANT_64BIT_FLAG (58)
1148 #define RIG_FUNC_BIT59 CONSTANT_64BIT_FLAG (59)
1149 #define RIG_FUNC_BIT60 CONSTANT_64BIT_FLAG (60)
1150 #define RIG_FUNC_BIT61 CONSTANT_64BIT_FLAG (61)
1151 #define RIG_FUNC_BIT62 CONSTANT_64BIT_FLAG (62)
1152 #define RIG_FUNC_BIT63 CONSTANT_64BIT_FLAG (63)
1153 /* 63 is this highest bit number that can be used */
1154 #endif
1155 
1162 #define mW(p) ((int)(p))
1170 #define Watts(p) ((int)((p)*1000))
1177 #define W(p) Watts(p)
1178 #if 0 // deprecating kW macro as this doesn't make sense
1185 #define kW(p) ((int)((p)*1000000L))
1186 #endif
1187 
1188 
1198 typedef uint64_t rmode_t;
1199 
1200 #define RIG_MODE_NONE 0
1201 #define RIG_MODE_AM CONSTANT_64BIT_FLAG (0)
1202 #define RIG_MODE_CW CONSTANT_64BIT_FLAG (1)
1203 #define RIG_MODE_USB CONSTANT_64BIT_FLAG (2)
1204 #define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3)
1205 #define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4)
1206 #define RIG_MODE_FM CONSTANT_64BIT_FLAG (5)
1207 #define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6)
1208 #define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7)
1209 #define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8)
1210 #define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9)
1211 #define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10)
1212 #define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11)
1213 #define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12)
1214 #define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13)
1215 #define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14)
1216 #define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15)
1217 #define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16)
1218 #define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17)
1219 #define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18)
1220 #define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19)
1221 #define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21)
1222 #define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22)
1223 #define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23)
1224 #define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24)
1225 #define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25)
1226 #define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26)
1227 #define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27)
1228 #define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28)
1229 #define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29)
1230 #define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30)
1231 #define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31)
1232 #ifndef SWIGLUAHIDE
1233 /* hide the top 32 bits from the Lua binding as they will not work */
1234 #define RIG_MODE_DD CONSTANT_64BIT_FLAG (32)
1235 #define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33)
1236 #define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34)
1237 #define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35)
1238 #define RIG_MODE_CWN CONSTANT_64BIT_FLAG (36)
1239 #define RIG_MODE_IQ CONSTANT_64BIT_FLAG (37)
1240 #define RIG_MODE_BIT38 CONSTANT_64BIT_FLAG (38)
1241 #define RIG_MODE_BIT39 CONSTANT_64BIT_FLAG (39)
1242 #define RIG_MODE_BIT40 CONSTANT_64BIT_FLAG (40)
1243 #define RIG_MODE_BIT41 CONSTANT_64BIT_FLAG (41)
1244 #define RIG_MODE_BIT42 CONSTANT_64BIT_FLAG (42)
1245 #define RIG_MODE_BIT43 CONSTANT_64BIT_FLAG (43)
1246 #define RIG_MODE_BIT44 CONSTANT_64BIT_FLAG (44)
1247 #define RIG_MODE_BIT45 CONSTANT_64BIT_FLAG (45)
1248 #define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46)
1249 #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47)
1250 #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48)
1251 #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49)
1252 #define RIG_MODE_BIT50 CONSTANT_64BIT_FLAG (50)
1253 #define RIG_MODE_BIT51 CONSTANT_64BIT_FLAG (51)
1254 #define RIG_MODE_BIT52 CONSTANT_64BIT_FLAG (52)
1255 #define RIG_MODE_BIT53 CONSTANT_64BIT_FLAG (53)
1256 #define RIG_MODE_BIT54 CONSTANT_64BIT_FLAG (54)
1257 #define RIG_MODE_BIT55 CONSTANT_64BIT_FLAG (55)
1258 #define RIG_MODE_BIT56 CONSTANT_64BIT_FLAG (56)
1259 #define RIG_MODE_BIT57 CONSTANT_64BIT_FLAG (57)
1260 #define RIG_MODE_BIT58 CONSTANT_64BIT_FLAG (58)
1261 #define RIG_MODE_BIT59 CONSTANT_64BIT_FLAG (59)
1262 #define RIG_MODE_BIT60 CONSTANT_64BIT_FLAG (60)
1263 #define RIG_MODE_BIT61 CONSTANT_64BIT_FLAG (61)
1264 #define RIG_MODE_BIT62 CONSTANT_64BIT_FLAG (62)
1265 #define RIG_MODE_TESTS_MAX CONSTANT_64BIT_FLAG (63)
1266 #endif
1267 
1271 #define RIG_MODE_SSB (RIG_MODE_USB|RIG_MODE_LSB)
1272 
1276 #define RIG_MODE_ECSS (RIG_MODE_ECSSUSB|RIG_MODE_ECSSLSB)
1277 
1279 #define RIG_DBLST_END 0 /* end marker in a preamp/att level list */
1280 #define RIG_IS_DBLST_END(d) ((d)==0)
1282 
1283 
1290 typedef struct freq_range_list {
1298  char *label;
1300 
1302 #define RIG_FRNG_END {Hz(0),Hz(0),RIG_MODE_NONE,0,0,RIG_VFO_NONE}
1303 #define RIG_IS_FRNG_END(r) ((r).startf == Hz(0) && (r).endf == Hz(0))
1305 
1325 };
1326 
1328 #define RIG_TS_ANY 0
1329 #define RIG_TS_END {RIG_MODE_NONE, 0}
1330 #define RIG_IS_TS_END(t) ((t).modes == RIG_MODE_NONE && (t).ts == 0)
1332 
1333 
1357 struct filter_list {
1360 };
1362 #define RIG_FLT_ANY 0
1363 #define RIG_FLT_END {RIG_MODE_NONE, 0}
1364 #define RIG_IS_FLT_END(f) ((f).modes == RIG_MODE_NONE)
1366 
1367 
1371 #define RIG_CHFLAG_NONE 0
1375 #define RIG_CHFLAG_SKIP (1<<0)
1379 #define RIG_CHFLAG_DATA (1<<1)
1383 #define RIG_CHFLAG_PSKIP (1<<2)
1384 
1389 struct ext_list {
1392 };
1393 
1395 #define RIG_EXT_END {0, {.i=0}}
1396 #define RIG_IS_EXT_END(x) ((x).token == 0)
1398 
1406 struct channel {
1408  int bank_num;
1429  tone_t ctcss_tone;
1430  tone_t ctcss_sql;
1431  tone_t dcs_code;
1432  tone_t dcs_sql;
1434  unsigned int flags;
1435  char channel_desc[HAMLIB_MAXCHANDESC];
1436  struct ext_list
1438 };
1439 
1443 typedef struct channel channel_t;
1444 
1450 struct channel_cap {
1451  unsigned bank_num: 1;
1452  unsigned vfo: 1;
1453  unsigned ant: 1;
1454  unsigned freq: 1;
1455  unsigned mode: 1;
1456  unsigned width: 1;
1458  unsigned tx_freq: 1;
1459  unsigned tx_mode: 1;
1460  unsigned tx_width: 1;
1462  unsigned split: 1;
1463  unsigned tx_vfo: 1;
1464  unsigned rptr_shift: 1;
1465  unsigned rptr_offs: 1;
1466  unsigned tuning_step: 1;
1467  unsigned rit: 1;
1468  unsigned xit: 1;
1471  unsigned ctcss_tone: 1;
1472  unsigned ctcss_sql: 1;
1473  unsigned dcs_code: 1;
1474  unsigned dcs_sql: 1;
1475  unsigned scan_group: 1;
1476  unsigned flags: 1;
1477  unsigned channel_desc: 1;
1478  unsigned ext_levels: 1;
1479 };
1480 
1484 typedef struct channel_cap channel_cap_t;
1485 
1486 
1497 typedef enum {
1507 
1508 
1522 struct chan_list {
1523  int startc;
1524  int endc;
1528 };
1529 
1531 #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE}
1532 #define RIG_IS_CHAN_END(c) ((c).type == RIG_MTYPE_NONE)
1534 
1538 #define RIG_MEM_CAPS_ALL -1
1539 
1543 typedef struct chan_list chan_t;
1544 
1545 
1557 struct gran {
1561 };
1562 
1566 typedef struct gran gran_t;
1567 
1568 
1572 struct cal_table {
1573  int size;
1574  struct {
1575  int raw;
1576  int val;
1577  } table[HAMLIB_MAX_CAL_LENGTH];
1578 };
1579 
1592 typedef struct cal_table cal_table_t;
1593 
1595 #define EMPTY_STR_CAL { 0, { { 0, 0 }, } }
1597 
1598 
1603  int size;
1604  struct {
1605  int raw;
1606  float val;
1607  } table[HAMLIB_MAX_CAL_LENGTH];
1608 };
1609 
1622 typedef struct cal_table_float cal_table_float_t;
1623 
1625 #define EMPTY_FLOAT_CAL { 0, { { 0, 0f }, } }
1626 
1627 typedef int (* chan_cb_t)(RIG *, channel_t **, int, const chan_t *, rig_ptr_t);
1628 typedef int (* confval_cb_t)(RIG *,
1629  const struct confparams *,
1630  value_t *,
1631  rig_ptr_t);
1633 
1638 {
1639  int id;
1640  char *name;
1641 };
1642 
1647  RIG_SPECTRUM_MODE_NONE = 0,
1652 };
1653 
1658 {
1659  int id;
1660  char *name;
1661 };
1662 
1675 {
1676  int id;
1692  unsigned char *spectrum_data;
1693 };
1694 
1715 #define RIG_MODEL(arg) .rig_model=arg,.macro_name=#arg
1716 #define HAMLIB_CHECK_RIG_CAPS "HAMLIB_CHECK_RIG_CAPS"
1717 struct rig_caps {
1718  rig_model_t rig_model;
1719  const char *model_name;
1720  const char *mfg_name;
1721  const char *version;
1722  const char *copyright;
1723  enum rig_status_e status;
1725  int rig_type;
1726  ptt_type_t ptt_type;
1727  dcd_type_t dcd_type;
1728  rig_port_t port_type;
1730  int serial_rate_min;
1731  int serial_rate_max;
1732  int serial_data_bits;
1733  int serial_stop_bits;
1734  enum serial_parity_e serial_parity;
1735  enum serial_handshake_e serial_handshake;
1737  int write_delay;
1738  int post_write_delay;
1739  int timeout;
1740  int retry;
1742  setting_t has_get_func;
1743  setting_t has_set_func;
1744  setting_t has_get_level;
1745  setting_t has_set_level;
1746  setting_t has_get_parm;
1747  setting_t has_set_parm;
1749  gran_t level_gran[RIG_SETTING_MAX];
1750  gran_t parm_gran[RIG_SETTING_MAX];
1752  const struct confparams *extparms;
1753  const struct confparams *extlevels;
1754  const struct confparams *extfuncs;
1755  int *ext_tokens;
1757  tone_t *ctcss_list;
1758  tone_t *dcs_list;
1760  int preamp[HAMLIB_MAXDBLSTSIZ];
1761  int attenuator[HAMLIB_MAXDBLSTSIZ];
1762  shortfreq_t max_rit;
1763  shortfreq_t max_xit;
1764  shortfreq_t max_ifshift;
1766  int agc_level_count;
1767  enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS];
1769  ann_t announces;
1771  vfo_op_t vfo_ops;
1772  scan_t scan_ops;
1773  int targetable_vfo;
1774  int transceive;
1776  int bank_qty;
1777  int chan_desc_sz;
1779  chan_t chan_list[HAMLIB_CHANLSTSIZ];
1781  // As of 2020-02-12 we know of 5 models from Icom USA, EUR, ITR, TPE, KOR for the IC-9700
1782  // So we currently have 5 ranges we need to deal with
1783  // The backend for the model should fill in the label field to explain what model it is
1784  // The the IC-9700 in ic7300.c for an example
1785  freq_range_t rx_range_list1[HAMLIB_FRQRANGESIZ];
1786  freq_range_t tx_range_list1[HAMLIB_FRQRANGESIZ];
1787  freq_range_t rx_range_list2[HAMLIB_FRQRANGESIZ];
1788  freq_range_t tx_range_list2[HAMLIB_FRQRANGESIZ];
1789  freq_range_t rx_range_list3[HAMLIB_FRQRANGESIZ];
1790  freq_range_t tx_range_list3[HAMLIB_FRQRANGESIZ];
1791  freq_range_t rx_range_list4[HAMLIB_FRQRANGESIZ];
1792  freq_range_t tx_range_list4[HAMLIB_FRQRANGESIZ];
1793  freq_range_t rx_range_list5[HAMLIB_FRQRANGESIZ];
1794  freq_range_t tx_range_list5[HAMLIB_FRQRANGESIZ];
1796  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
1797  struct filter_list filters[HAMLIB_FLTLSTSIZ];
1799  cal_table_t str_cal;
1800  cal_table_float_t swr_cal;
1801  cal_table_float_t alc_cal;
1802  cal_table_float_t rfpower_meter_cal;
1803  cal_table_float_t comp_meter_cal;
1804  cal_table_float_t vd_meter_cal;
1805  cal_table_float_t id_meter_cal;
1807  struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES];
1808  enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES];
1809  freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS];
1810  struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES];
1811  int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ];
1813  const struct confparams *cfgparams;
1814  const rig_ptr_t priv;
1816  /*
1817  * Rig API
1818  *
1819  */
1820 
1821  int (*rig_init)(RIG *rig);
1822  int (*rig_cleanup)(RIG *rig);
1823  int (*rig_open)(RIG *rig);
1824  int (*rig_close)(RIG *rig);
1825 
1826  /*
1827  * General API commands, from most primitive to least.. :()
1828  * List Set/Get functions pairs
1829  */
1830 
1831  int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq);
1832  int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq);
1833 
1834  int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
1835  int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
1836 
1837  int (*set_vfo)(RIG *rig, vfo_t vfo);
1838  int (*get_vfo)(RIG *rig, vfo_t *vfo);
1839 
1840  int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt);
1841  int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt);
1842 
1843  int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd);
1844 
1845  int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
1846  int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);
1847 
1848  int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs);
1849  int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs);
1850 
1851  int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq);
1852  int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq);
1853 
1854  int (*set_split_mode)(RIG *rig,
1855  vfo_t vfo,
1856  rmode_t tx_mode,
1857  pbwidth_t tx_width);
1858  int (*get_split_mode)(RIG *rig,
1859  vfo_t vfo,
1860  rmode_t *tx_mode,
1861  pbwidth_t *tx_width);
1862 
1863  int (*set_split_freq_mode)(RIG *rig,
1864  vfo_t vfo,
1865  freq_t tx_freq,
1866  rmode_t tx_mode,
1867  pbwidth_t tx_width);
1868  int (*get_split_freq_mode)(RIG *rig,
1869  vfo_t vfo,
1870  freq_t *tx_freq,
1871  rmode_t *tx_mode,
1872  pbwidth_t *tx_width);
1873 
1874  int (*set_split_vfo)(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
1875  int (*get_split_vfo)(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
1876 
1877  int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit);
1878  int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit);
1879 
1880  int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit);
1881  int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit);
1882 
1883  int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts);
1884  int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts);
1885 
1886  int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code);
1887  int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code);
1888 
1889  int (*set_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1890  int (*get_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1891 
1892  int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone);
1893  int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone);
1894 
1895  int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code);
1896  int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code);
1897 
1898  int (*set_tone_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1899  int (*get_tone_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1900 
1901  int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone);
1902  int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone);
1903 
1904  int (*power2mW)(RIG *rig,
1905  unsigned int *mwpower,
1906  float power,
1907  freq_t freq,
1908  rmode_t mode);
1909  int (*mW2power)(RIG *rig,
1910  float *power,
1911  unsigned int mwpower,
1912  freq_t freq,
1913  rmode_t mode);
1914 
1915  int (*set_powerstat)(RIG *rig, powerstat_t status);
1916  int (*get_powerstat)(RIG *rig, powerstat_t *status);
1917 
1918  int (*reset)(RIG *rig, reset_t reset);
1919 
1920  int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t option);
1921  int (*get_ant)(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, ant_t *ant_curr, ant_t *ant_tx, ant_t *ant_rx);
1922 
1923  int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val);
1924  int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
1925 
1926  int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status);
1927  int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status);
1928 
1929  int (*set_parm)(RIG *rig, setting_t parm, value_t val);
1930  int (*get_parm)(RIG *rig, setting_t parm, value_t *val);
1931 
1932  int (*set_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t val);
1933  int (*get_ext_level)(RIG *rig, vfo_t vfo, token_t token, value_t *val);
1934 
1935  int (*set_ext_func)(RIG *rig, vfo_t vfo, token_t token, int status);
1936  int (*get_ext_func)(RIG *rig, vfo_t vfo, token_t token, int *status);
1937 
1938  int (*set_ext_parm)(RIG *rig, token_t token, value_t val);
1939  int (*get_ext_parm)(RIG *rig, token_t token, value_t *val);
1940 
1941  int (*set_conf)(RIG *rig, token_t token, const char *val);
1942  int (*get_conf)(RIG *rig, token_t token, char *val);
1943 
1944  int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits);
1945  int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length);
1946 
1947  int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg);
1948  int (*stop_morse)(RIG *rig, vfo_t vfo);
1949  int (*wait_morse)(RIG *rig, vfo_t vfo);
1950 
1951  int (*send_voice_mem)(RIG *rig, vfo_t vfo, int ch);
1952 
1953  int (*set_bank)(RIG *rig, vfo_t vfo, int bank);
1954 
1955  int (*set_mem)(RIG *rig, vfo_t vfo, int ch);
1956  int (*get_mem)(RIG *rig, vfo_t vfo, int *ch);
1957 
1958  int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op);
1959 
1960  int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch);
1961 
1962  int (*set_trn)(RIG *rig, int trn);
1963  int (*get_trn)(RIG *rig, int *trn);
1964 
1965  int (*decode_event)(RIG *rig);
1966 
1967  int (*set_channel)(RIG *rig, vfo_t vfo, const channel_t *chan);
1968  int (*get_channel)(RIG *rig, vfo_t vfo, channel_t *chan, int read_only);
1969 
1970  const char * (*get_info)(RIG *rig);
1971 
1972  int (*set_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1973  int (*get_chan_all_cb)(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t);
1974 
1975  int (*set_mem_all_cb)(RIG *rig,
1976  chan_cb_t chan_cb,
1977  confval_cb_t parm_cb,
1978  rig_ptr_t);
1979  int (*get_mem_all_cb)(RIG *rig,
1980  chan_cb_t chan_cb,
1981  confval_cb_t parm_cb,
1982  rig_ptr_t);
1983 
1984  int (*set_vfo_opt)(RIG *rig, int status); // only for Net Rigctl device
1985  int (*rig_get_vfo_info) (RIG *rig,
1986  vfo_t vfo,
1987  freq_t *freq,
1988  rmode_t *mode,
1989  pbwidth_t *width,
1990  split_t *split);
1991  int(*set_clock) (RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
1992  int(*get_clock) (RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
1993 
1994  const char *clone_combo_set;
1995  const char *clone_combo_get;
1996  const char *macro_name;
1998  int async_data_supported;
1999  int (*read_frame_direct)(RIG *rig,
2000  size_t buffer_length,
2001  const unsigned char *buffer);
2002  int (*is_async_frame)(RIG *rig,
2003  size_t frame_length,
2004  const unsigned char *frame);
2005  int (*process_async_frame)(RIG *rig,
2006  size_t frame_length,
2007  const unsigned char *frame);
2008 // this will be used to check rigcaps structure is compatible with client
2009  const char *hamlib_check_rig_caps; // a constant value we can check for hamlib integrity
2010  int (*get_conf2)(RIG *rig, token_t token, char *val, int val_len);
2011 };
2013 
2019 // all functions enumerated for rig_get_function_ptr
2020 enum rig_function_e {
2021  RIG_FUNCTION_INIT,
2022  RIG_FUNCTION_CLEANUP,
2023  RIG_FUNCTION_OPEN,
2024  RIG_FUNCTION_CLOSE,
2025  RIG_FUNCTION_SET_FREQ,
2026  RIG_FUNCTION_GET_FREQ,
2027  RIG_FUNCTION_SET_MODE,
2028  RIG_FUNCTION_GET_MODE,
2029  RIG_FUNCTION_SET_VFO,
2030  RIG_FUNCTION_GET_VFO,
2031  RIG_FUNCTION_SET_PTT,
2032  RIG_FUNCTION_GET_PTT,
2033  RIG_FUNCTION_GET_DCD,
2034  RIG_FUNCTION_SET_RPTR_SHIFT,
2035  RIG_FUNCTION_GET_RPTR_SHIFT,
2036  RIG_FUNCTION_SET_RPTR_OFFS,
2037  RIG_FUNCTION_GET_RPTR_OFFS,
2038  RIG_FUNCTION_SET_SPLIT_FREQ,
2039  RIG_FUNCTION_GET_SPLIT_FREQ,
2040  RIG_FUNCTION_SET_SPLIT_MODE,
2041  RIG_FUNCTION_SET_SPLIT_FREQ_MODE,
2042  RIG_FUNCTION_GET_SPLIT_FREQ_MODE,
2043  RIG_FUNCTION_SET_SPLIT_VFO,
2044  RIG_FUNCTION_GET_SPLIT_VFO,
2045  RIG_FUNCTION_SET_RIT,
2046  RIG_FUNCTION_GET_RIT,
2047  RIG_FUNCTION_SET_XIT,
2048  RIG_FUNCTION_GET_XIT,
2049  RIG_FUNCTION_SET_TS,
2050  RIG_FUNCTION_GET_TS,
2051  RIG_FUNCTION_SET_DCS_CODE,
2052  RIG_FUNCTION_GET_DCS_CODE,
2053  RIG_FUNCTION_SET_TONE,
2054  RIG_FUNCTION_GET_TONE,
2055  RIG_FUNCTION_SET_CTCSS_TONE,
2056  RIG_FUNCTION_GET_CTCSS_TONE,
2057  RIG_FUNCTION_SET_DCS_SQL,
2058  RIG_FUNCTION_GET_DCS_SQL,
2059  RIG_FUNCTION_SET_TONE_SQL,
2060  RIG_FUNCTION_GET_TONE_SQL,
2061  RIG_FUNCTION_SET_CTCSS_SQL,
2062  RIG_FUNCTION_GET_CTCSS_SQL,
2063  RIG_FUNCTION_POWER2MW,
2064  RIG_FUNCTION_MW2POWER,
2065  RIG_FUNCTION_SET_POWERSTAT,
2066  RIG_FUNCTION_GET_POWERSTAT,
2067  RIG_FUNCTION_RESET,
2068  RIG_FUNCTION_SET_ANT,
2069  RIG_FUNCTION_GET_ANT,
2070  RIG_FUNCTION_SET_LEVEL,
2071  RIG_FUNCTION_GET_LEVEL,
2072  RIG_FUNCTION_SET_FUNC,
2073  RIG_FUNCTION_GET_FUNC,
2074  RIG_FUNCTION_SET_PARM,
2075  RIG_FUNCTION_GET_PARM,
2076  RIG_FUNCTION_SET_EXT_LEVEL,
2077  RIG_FUNCTION_GET_EXT_LEVEL,
2078  RIG_FUNCTION_SET_EXT_FUNC,
2079  RIG_FUNCTION_GET_EXT_FUNC,
2080  RIG_FUNCTION_SET_EXT_PARM,
2081  RIG_FUNCTION_GET_EXT_PARM,
2082  RIG_FUNCTION_SET_CONF,
2083  RIG_FUNCTION_GET_CONF,
2084  RIG_FUNCTION_SEND_DTMF,
2085  RIG_FUNCTION_SEND_MORSE,
2086  RIG_FUNCTION_STOP_MORSE,
2087  RIG_FUNCTION_WAIT_MORSE,
2088  RIG_FUNCTION_SEND_VOICE_MEM,
2089  RIG_FUNCTION_SET_BANK,
2090  RIG_FUNCTION_SET_MEM,
2091  RIG_FUNCTION_GET_MEM,
2092  RIG_FUNCTION_VFO_OP,
2093  RIG_FUNCTION_SCAN,
2094  RIG_FUNCTION_SET_TRN,
2095  RIG_FUNCTION_GET_TRN,
2096  RIG_FUNCTION_DECODE_EVENT,
2097  RIG_FUNCTION_SET_CHANNEL,
2098  RIG_FUNCTION_GET_CHANNEL,
2099  RIG_FUNCTION_GET_INFO,
2100  RIG_FUNCTION_SET_CHAN_ALL_CB,
2101  RIG_FUNCTION_GET_CHAN_ALL_CB,
2102  RIG_FUNCTION_SET_MEM_ALL_CB,
2103  RIG_FUNCTION_GET_MEM_ALL_CB,
2104  RIG_FUNCTION_SET_VFO_OPT,
2105  RIG_FUNCTION_READ_FRAME_DIRECT,
2106  RIG_FUNCTION_IS_ASYNC_FRAME,
2107  RIG_FUNCTION_PROCESS_ASYNC_FRAME,
2108  RIG_FUNCTION_GET_CONF2,
2109 };
2110 
2116 extern HAMLIB_EXPORT (void *) rig_get_function_ptr(rig_model_t rig_model, enum rig_function_e rig_function);
2117 
2123 // values enumerated for rig->caps values
2124 enum rig_caps_int_e {
2125  RIG_CAPS_TARGETABLE_VFO,
2126  RIG_CAPS_RIG_MODEL,
2127  RIG_CAPS_PORT_TYPE,
2128  RIG_CAPS_PTT_TYPE,
2129  RIG_CAPS_HAS_GET_LEVEL
2130 };
2131 
2132 enum rig_caps_cptr_e {
2133  RIG_CAPS_VERSION_CPTR,
2134  RIG_CAPS_MFG_NAME_CPTR,
2135  RIG_CAPS_MODEL_NAME_CPTR,
2136  RIG_CAPS_STATUS_CPTR
2137 };
2138 
2144 extern HAMLIB_EXPORT (long long) rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps);
2145 
2151 extern HAMLIB_EXPORT (const char *) rig_get_caps_cptr(rig_model_t rig_model, enum rig_caps_cptr_e rig_caps);
2152 
2153 struct hamlib_async_pipe;
2154 
2155 typedef struct hamlib_async_pipe hamlib_async_pipe_t;
2156 
2163 typedef struct hamlib_port {
2164  union {
2165  rig_port_t rig;
2166  ptt_type_t ptt;
2167  dcd_type_t dcd;
2168  } type;
2169 
2170  int fd;
2171  void *handle;
2173  int write_delay;
2174  int post_write_delay;
2176  struct {
2177  int tv_sec, tv_usec;
2178  } post_write_date;
2180  int timeout;
2181  short retry;
2182  short flushx;
2184  char pathname[HAMLIB_FILPATHLEN];
2186  union {
2187  struct {
2188  int rate;
2189  int data_bits;
2190  int stop_bits;
2191  enum serial_parity_e parity;
2192  enum serial_handshake_e handshake;
2193  enum serial_control_state_e rts_state;
2194  enum serial_control_state_e dtr_state;
2195  } serial;
2197  struct {
2198  int pin;
2199  } parallel;
2201  struct {
2202  int ptt_bitnum;
2203  } cm108;
2205  struct {
2206  int vid;
2207  int pid;
2208  int conf;
2209  int iface;
2210  int alt;
2211  char *vendor_name;
2212  char *product;
2213  } usb;
2215  struct {
2216  int on_value;
2217  int value;
2218  } gpio;
2219  } parm;
2220  int client_port;
2221  RIG *rig;
2223 #ifdef ASYNC_BUG
2224  int async;
2225 #if defined(_WIN32)
2226  hamlib_async_pipe_t *sync_data_pipe;
2227  hamlib_async_pipe_t *sync_data_error_pipe;
2228 #else
2229  int fd_sync_write;
2230  int fd_sync_read;
2231  int fd_sync_error_write;
2232  int fd_sync_error_read;
2233 #endif
2234 #endif
2235 } hamlib_port_t;
2237 
2238 #if !defined(__APPLE__) || !defined(__cplusplus)
2239 typedef hamlib_port_t port_t;
2240 #endif
2241 
2242 #define HAMLIB_ELAPSED_GET 0
2243 #define HAMLIB_ELAPSED_SET 1
2244 #define HAMLIB_ELAPSED_INVALIDATE 2
2245 
2246 #define HAMLIB_CACHE_ALWAYS (-1) /*< value to set cache timeout to always use cache */
2247 
2248 typedef enum {
2249  HAMLIB_CACHE_ALL, // to set all cache timeouts at once
2250  HAMLIB_CACHE_VFO,
2251  HAMLIB_CACHE_FREQ,
2252  HAMLIB_CACHE_MODE,
2253  HAMLIB_CACHE_PTT,
2254  HAMLIB_CACHE_SPLIT,
2255  HAMLIB_CACHE_WIDTH
2256 } hamlib_cache_t;
2257 
2258 typedef enum {
2259  TWIDDLE_OFF,
2260  TWIDDLE_ON
2261 } twiddle_state_t;
2262 
2268 struct rig_cache {
2269  int timeout_ms; // the cache timeout for invalidating itself
2270  vfo_t vfo;
2271  //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1
2272  // other abstraction here is based on dual vfo rigs and mapped to all others
2273  // So we have four possible states of rig
2274  // MainA, MainB, SubA, SubB
2275  // Main is the Main VFO and Sub is for the 2nd VFO
2276  // Most rigs have MainA and MainB
2277  // Dual VFO rigs can have SubA and SubB too
2278  // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction
2279  freq_t freqCurr; // Other VFO
2280  freq_t freqOther; // Other VFO
2281  freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA
2282  freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB
2283  freq_t freqMainC; // VFO_C, VFO_MAINC
2284  freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs
2285  freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs
2286  freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs
2287  freq_t freqMem; // VFO_MEM -- last MEM channel
2288  rmode_t modeCurr;
2289  rmode_t modeOther;
2290  rmode_t modeMainA;
2291  rmode_t modeMainB;
2292  rmode_t modeMainC;
2293  rmode_t modeSubA;
2294  rmode_t modeSubB;
2295  rmode_t modeSubC;
2296  rmode_t modeMem;
2297  pbwidth_t widthCurr; // if non-zero then rig has separate width for MainA
2298  pbwidth_t widthOther; // if non-zero then rig has separate width for MainA
2299  pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA
2300  pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB
2301  pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC
2302  pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA
2303  pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB
2304  pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC
2305  pbwidth_t widthMem; // if non-zero then rig has separate width for Mem
2306  ptt_t ptt;
2307  split_t split;
2308  vfo_t split_vfo; // split caches two values
2309  struct timespec time_freqCurr;
2310  struct timespec time_freqOther;
2311  struct timespec time_freqMainA;
2312  struct timespec time_freqMainB;
2313  struct timespec time_freqMainC;
2314  struct timespec time_freqSubA;
2315  struct timespec time_freqSubB;
2316  struct timespec time_freqSubC;
2317  struct timespec time_freqMem;
2318  struct timespec time_vfo;
2319  struct timespec time_modeCurr;
2320  struct timespec time_modeOther;
2321  struct timespec time_modeMainA;
2322  struct timespec time_modeMainB;
2323  struct timespec time_modeMainC;
2324  struct timespec time_modeSubA;
2325  struct timespec time_modeSubB;
2326  struct timespec time_modeSubC;
2327  struct timespec time_modeMem;
2328  struct timespec time_widthCurr;
2329  struct timespec time_widthOther;
2330  struct timespec time_widthMainA;
2331  struct timespec time_widthMainB;
2332  struct timespec time_widthMainC;
2333  struct timespec time_widthSubA;
2334  struct timespec time_widthSubB;
2335  struct timespec time_widthSubC;
2336  struct timespec time_widthMem;
2337  struct timespec time_ptt;
2338  struct timespec time_split;
2339  int satmode; // if rig is in satellite mode
2340 };
2341 
2342 
2353 struct rig_state {
2354  /*
2355  * overridable fields
2356  */
2357  hamlib_port_t rigport;
2358  hamlib_port_t pttport;
2359  hamlib_port_t dcdport;
2361  double vfo_comp;
2364  freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ];
2365  freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ];
2367  struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ];
2369  struct filter_list filters[HAMLIB_FLTLSTSIZ];
2373  chan_t chan_list[HAMLIB_CHANLSTSIZ];
2381  int preamp[HAMLIB_MAXDBLSTSIZ];
2382  int attenuator[HAMLIB_MAXDBLSTSIZ];
2395  /*
2396  * non overridable fields, internal use
2397  */
2398 
2401  int vfo_list;
2403  rig_ptr_t priv;
2404  rig_ptr_t obj;
2410  //rmode_t current_modeB; /*!< Mode currently set VFOB */
2414  // mode_list is used by some
2415  // so anything added to this structure must be below here
2416  int transmit;
2420  time_t twiddle_time;
2422  // uplink allows gpredict to behave better by no reading the uplink VFO
2423  int uplink;
2424  struct rig_cache cache;
2425  int vfo_opt;
2442  volatile unsigned int snapshot_packet_sequence_number;
2443 
2444  volatile int multicast_publisher_run;
2446  volatile int async_data_handler_thread_run;
2447  void *async_data_handler_priv_data;
2448  volatile int poll_routine_thread_run;
2449  void *poll_routine_priv_data;
2450 };
2451 
2453 typedef int (*vprintf_cb_t)(enum rig_debug_level_e,
2454  rig_ptr_t,
2455  const char *,
2456  va_list);
2457 
2458 typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t);
2459 typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t);
2460 typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t);
2461 typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t);
2462 typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t);
2463 typedef int (*pltune_cb_t)(RIG *,
2464  vfo_t, freq_t *,
2465  rmode_t *,
2466  pbwidth_t *,
2467  rig_ptr_t);
2468 typedef int (*spectrum_cb_t)(RIG *,
2469  struct rig_spectrum_line *,
2470  rig_ptr_t);
2471 
2473 
2492  freq_cb_t freq_event;
2493  rig_ptr_t freq_arg;
2494  mode_cb_t mode_event;
2495  rig_ptr_t mode_arg;
2496  vfo_cb_t vfo_event;
2497  rig_ptr_t vfo_arg;
2498  ptt_cb_t ptt_event;
2499  rig_ptr_t ptt_arg;
2500  dcd_cb_t dcd_event;
2501  rig_ptr_t dcd_arg;
2502  pltune_cb_t pltune;
2503  rig_ptr_t pltune_arg;
2504  spectrum_cb_t spectrum_event;
2505  rig_ptr_t spectrum_arg;
2506  /* etc.. */
2507 };
2508 
2509 
2519 struct s_rig {
2520  struct rig_caps *caps;
2521  struct rig_state state;
2522  struct rig_callbacks callbacks;
2523 };
2524 
2525 
2526 
2527 /* --------------- API function prototypes -----------------*/
2528 
2530 
2531 extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model));
2532 extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig));
2533 
2534 /*
2535  * General API commands, from most primitive to least.. :()
2536  * List Set/Get functions pairs
2537  */
2538 
2539 extern HAMLIB_EXPORT(int)
2540 rig_flush(hamlib_port_t *port);
2541 
2542 extern HAMLIB_EXPORT(int)
2543 rig_set_freq HAMLIB_PARAMS((RIG *rig,
2544  vfo_t vfo,
2545  freq_t freq));
2546 extern HAMLIB_EXPORT(int)
2547 rig_get_freq HAMLIB_PARAMS((RIG *rig,
2548  vfo_t vfo,
2549  freq_t *freq));
2550 
2551 extern HAMLIB_EXPORT(int)
2552 rig_set_mode HAMLIB_PARAMS((RIG *rig,
2553  vfo_t vfo,
2554  rmode_t mode,
2555  pbwidth_t width));
2556 extern HAMLIB_EXPORT(int)
2557 rig_get_mode HAMLIB_PARAMS((RIG *rig,
2558  vfo_t vfo,
2559  rmode_t *mode,
2560  pbwidth_t *width));
2561 
2562 #if 0
2563 #define rig_set_vfo(r,v) rig_set_vfo(r,v,__builtin_FUNCTION())
2564 extern HAMLIB_EXPORT(int)
2565 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2566  vfo_t vfo, const char *func));
2567 #else
2568 extern HAMLIB_EXPORT(int)
2569 rig_set_vfo HAMLIB_PARAMS((RIG *rig,
2570  vfo_t vfo));
2571 #endif
2572 extern HAMLIB_EXPORT(int)
2573 rig_get_vfo HAMLIB_PARAMS((RIG *rig,
2574  vfo_t *vfo));
2575 
2576 extern HAMLIB_EXPORT(int)
2577 rig_get_vfo_info HAMLIB_PARAMS((RIG *rig,
2578  vfo_t vfo,
2579  freq_t *freq,
2580  rmode_t *mode,
2581  pbwidth_t *width,
2582  split_t *split,
2583  int *satmode));
2584 
2585 extern HAMLIB_EXPORT(int)
2586 rig_get_vfo_list HAMLIB_PARAMS((RIG *rig, char *buf, int buflen));
2587 
2588 extern HAMLIB_EXPORT(int)
2589 netrigctl_get_vfo_mode HAMLIB_PARAMS((RIG *rig));
2590 
2591 extern HAMLIB_EXPORT(int)
2592 rig_set_ptt HAMLIB_PARAMS((RIG *rig,
2593  vfo_t vfo,
2594  ptt_t ptt));
2595 extern HAMLIB_EXPORT(int)
2596 rig_get_ptt HAMLIB_PARAMS((RIG *rig,
2597  vfo_t vfo,
2598  ptt_t *ptt));
2599 
2600 extern HAMLIB_EXPORT(int)
2601 rig_get_dcd HAMLIB_PARAMS((RIG *rig,
2602  vfo_t vfo,
2603  dcd_t *dcd));
2604 
2605 extern HAMLIB_EXPORT(int)
2606 rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig,
2607  vfo_t vfo,
2608  rptr_shift_t rptr_shift));
2609 extern HAMLIB_EXPORT(int)
2610 rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig,
2611  vfo_t vfo,
2612  rptr_shift_t *rptr_shift));
2613 
2614 extern HAMLIB_EXPORT(int)
2615 rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig,
2616  vfo_t vfo,
2617  shortfreq_t rptr_offs));
2618 extern HAMLIB_EXPORT(int)
2619 rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig,
2620  vfo_t vfo,
2621  shortfreq_t *rptr_offs));
2622 
2623 extern HAMLIB_EXPORT(int)
2624 rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2625  vfo_t vfo,
2626  tone_t tone));
2627 extern HAMLIB_EXPORT(int)
2628 rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig,
2629  vfo_t vfo,
2630  tone_t *tone));
2631 
2632 extern HAMLIB_EXPORT(int)
2633 rig_set_dcs_code HAMLIB_PARAMS((RIG *rig,
2634  vfo_t vfo,
2635  tone_t code));
2636 extern HAMLIB_EXPORT(int)
2637 rig_get_dcs_code HAMLIB_PARAMS((RIG *rig,
2638  vfo_t vfo,
2639  tone_t *code));
2640 
2641 extern HAMLIB_EXPORT(int)
2642 rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2643  vfo_t vfo,
2644  tone_t tone));
2645 extern HAMLIB_EXPORT(int)
2646 rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig,
2647  vfo_t vfo,
2648  tone_t *tone));
2649 
2650 extern HAMLIB_EXPORT(int)
2651 rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig,
2652  vfo_t vfo,
2653  tone_t code));
2654 extern HAMLIB_EXPORT(int)
2655 rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig,
2656  vfo_t vfo,
2657  tone_t *code));
2658 
2659 extern HAMLIB_EXPORT(int)
2660 rig_set_split_freq HAMLIB_PARAMS((RIG *rig,
2661  vfo_t vfo,
2662  freq_t tx_freq));
2663 extern HAMLIB_EXPORT(int)
2664 rig_get_split_freq HAMLIB_PARAMS((RIG *rig,
2665  vfo_t vfo,
2666  freq_t *tx_freq));
2667 
2668 extern HAMLIB_EXPORT(int)
2669 rig_set_split_mode HAMLIB_PARAMS((RIG *rig,
2670  vfo_t vfo,
2671  rmode_t tx_mode,
2672  pbwidth_t tx_width));
2673 extern HAMLIB_EXPORT(int)
2674 rig_get_split_mode HAMLIB_PARAMS((RIG *rig,
2675  vfo_t vfo,
2676  rmode_t *tx_mode,
2677  pbwidth_t *tx_width));
2678 
2679 extern HAMLIB_EXPORT(int)
2680 rig_set_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2681  vfo_t vfo,
2682  freq_t tx_freq,
2683  rmode_t tx_mode,
2684  pbwidth_t tx_width));
2685 extern HAMLIB_EXPORT(int)
2686 rig_get_split_freq_mode HAMLIB_PARAMS((RIG *rig,
2687  vfo_t vfo,
2688  freq_t *tx_freq,
2689  rmode_t *tx_mode,
2690  pbwidth_t *tx_width));
2691 
2692 extern HAMLIB_EXPORT(int)
2693 rig_set_split_vfo HAMLIB_PARAMS((RIG *,
2694  vfo_t rx_vfo,
2695  split_t split,
2696  vfo_t tx_vfo));
2697 extern HAMLIB_EXPORT(int)
2698 rig_get_split_vfo HAMLIB_PARAMS((RIG *,
2699  vfo_t rx_vfo,
2700  split_t *split,
2701  vfo_t *tx_vfo));
2702 
2703 #define rig_set_split(r,v,s) rig_set_split_vfo((r),(v),(s),RIG_VFO_CURR)
2704 #define rig_get_split(r,v,s) ({ vfo_t _tx_vfo; rig_get_split_vfo((r),(v),(s),&_tx_vfo); })
2705 
2706 extern HAMLIB_EXPORT(int)
2707 rig_set_rit HAMLIB_PARAMS((RIG *rig,
2708  vfo_t vfo,
2709  shortfreq_t rit));
2710 extern HAMLIB_EXPORT(int)
2711 rig_get_rit HAMLIB_PARAMS((RIG *rig,
2712  vfo_t vfo,
2713  shortfreq_t *rit));
2714 
2715 extern HAMLIB_EXPORT(int)
2716 rig_set_xit HAMLIB_PARAMS((RIG *rig,
2717  vfo_t vfo,
2718  shortfreq_t xit));
2719 extern HAMLIB_EXPORT(int)
2720 rig_get_xit HAMLIB_PARAMS((RIG *rig,
2721  vfo_t vfo,
2722  shortfreq_t *xit));
2723 
2724 extern HAMLIB_EXPORT(int)
2725 rig_set_ts HAMLIB_PARAMS((RIG *rig,
2726  vfo_t vfo,
2727  shortfreq_t ts));
2728 extern HAMLIB_EXPORT(int)
2729 rig_get_ts HAMLIB_PARAMS((RIG *rig,
2730  vfo_t vfo,
2731  shortfreq_t *ts));
2732 
2733 extern HAMLIB_EXPORT(int)
2734 rig_power2mW HAMLIB_PARAMS((RIG *rig,
2735  unsigned int *mwpower,
2736  float power,
2737  freq_t freq,
2738  rmode_t mode));
2739 extern HAMLIB_EXPORT(int)
2740 rig_mW2power HAMLIB_PARAMS((RIG *rig,
2741  float *power,
2742  unsigned int mwpower,
2743  freq_t freq,
2744  rmode_t mode));
2745 
2746 extern HAMLIB_EXPORT(shortfreq_t)
2747 rig_get_resolution HAMLIB_PARAMS((RIG *rig,
2748  rmode_t mode));
2749 
2750 extern HAMLIB_EXPORT(int)
2751 rig_set_level HAMLIB_PARAMS((RIG *rig,
2752  vfo_t vfo,
2753  setting_t level,
2754  value_t val));
2755 extern HAMLIB_EXPORT(int)
2756 rig_get_level HAMLIB_PARAMS((RIG *rig,
2757  vfo_t vfo,
2758  setting_t level,
2759  value_t *val));
2760 
2761 #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s))
2762 
2763 extern HAMLIB_EXPORT(int)
2764 rig_set_parm HAMLIB_PARAMS((RIG *rig,
2765  setting_t parm,
2766  value_t val));
2767 extern HAMLIB_EXPORT(int)
2768 rig_get_parm HAMLIB_PARAMS((RIG *rig,
2769  setting_t parm,
2770  value_t *val));
2771 
2772 extern HAMLIB_EXPORT(int)
2773 rig_set_conf HAMLIB_PARAMS((RIG *rig,
2774  token_t token,
2775  const char *val));
2776 // deprecating rig_get_conf
2777 extern HAMLIB_EXPORT(int)
2778 rig_get_conf HAMLIB_PARAMS((RIG *rig,
2779  token_t token,
2780  char *val));
2781 extern HAMLIB_EXPORT(int)
2782 rig_get_conf2 HAMLIB_PARAMS((RIG *rig,
2783  token_t token,
2784  char *val,
2785  int val_len));
2786 
2787 extern HAMLIB_EXPORT(int)
2788 rig_set_powerstat HAMLIB_PARAMS((RIG *rig,
2789  powerstat_t status));
2790 extern HAMLIB_EXPORT(int)
2791 rig_get_powerstat HAMLIB_PARAMS((RIG *rig,
2792  powerstat_t *status));
2793 
2794 extern HAMLIB_EXPORT(int)
2795 rig_reset HAMLIB_PARAMS((RIG *rig,
2796  reset_t reset)); /* dangerous! */
2797 
2798 extern HAMLIB_EXPORT(int)
2799 rig_set_ext_level HAMLIB_PARAMS((RIG *rig,
2800  vfo_t vfo,
2801  token_t token,
2802  value_t val));
2803 extern HAMLIB_EXPORT(int)
2804 rig_get_ext_level HAMLIB_PARAMS((RIG *rig,
2805  vfo_t vfo,
2806  token_t token,
2807  value_t *val));
2808 
2809 extern HAMLIB_EXPORT(int)
2810 rig_set_ext_func HAMLIB_PARAMS((RIG *rig,
2811  vfo_t vfo,
2812  token_t token,
2813  int status));
2814 extern HAMLIB_EXPORT(int)
2815 rig_get_ext_func HAMLIB_PARAMS((RIG *rig,
2816  vfo_t vfo,
2817  token_t token,
2818  int *status));
2819 
2820 extern HAMLIB_EXPORT(int)
2821 rig_set_ext_parm HAMLIB_PARAMS((RIG *rig,
2822  token_t token,
2823  value_t val));
2824 extern HAMLIB_EXPORT(int)
2825 rig_get_ext_parm HAMLIB_PARAMS((RIG *rig,
2826  token_t token,
2827  value_t *val));
2828 
2829 extern HAMLIB_EXPORT(int)
2830 rig_ext_func_foreach HAMLIB_PARAMS((RIG *rig,
2831  int (*cfunc)(RIG *,
2832  const struct confparams *,
2833  rig_ptr_t),
2834  rig_ptr_t data));
2835 extern HAMLIB_EXPORT(int)
2836 rig_ext_level_foreach HAMLIB_PARAMS((RIG *rig,
2837  int (*cfunc)(RIG *,
2838  const struct confparams *,
2839  rig_ptr_t),
2840  rig_ptr_t data));
2841 extern HAMLIB_EXPORT(int)
2842 rig_ext_parm_foreach HAMLIB_PARAMS((RIG *rig,
2843  int (*cfunc)(RIG *,
2844  const struct confparams *,
2845  rig_ptr_t),
2846  rig_ptr_t data));
2847 
2848 extern HAMLIB_EXPORT(const struct confparams *)
2849 rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
2850  const char *name));
2851 
2852 extern HAMLIB_EXPORT(const struct confparams *)
2853 rig_ext_lookup_tok HAMLIB_PARAMS((RIG *rig,
2854  token_t token));
2855 extern HAMLIB_EXPORT(token_t)
2856 rig_ext_token_lookup HAMLIB_PARAMS((RIG *rig,
2857  const char *name));
2858 
2859 
2860 extern HAMLIB_EXPORT(int)
2861 rig_token_foreach HAMLIB_PARAMS((RIG *rig,
2862  int (*cfunc)(const struct confparams *,
2863  rig_ptr_t),
2864  rig_ptr_t data));
2865 
2866 extern HAMLIB_EXPORT(const struct confparams *)
2867 rig_confparam_lookup HAMLIB_PARAMS((RIG *rig,
2868  const char *name));
2869 extern HAMLIB_EXPORT(token_t)
2870 rig_token_lookup HAMLIB_PARAMS((RIG *rig,
2871  const char *name));
2872 
2873 extern HAMLIB_EXPORT(int)
2874 rig_close HAMLIB_PARAMS((RIG *rig));
2875 
2876 extern HAMLIB_EXPORT(int)
2877 rig_cleanup HAMLIB_PARAMS((RIG *rig));
2878 
2879 extern HAMLIB_EXPORT(int)
2880 rig_set_ant HAMLIB_PARAMS((RIG *rig,
2881  vfo_t vfo,
2882  ant_t ant, /* antenna */
2883  value_t option)); /* optional ant info */
2884 extern HAMLIB_EXPORT(int)
2885 rig_get_ant HAMLIB_PARAMS((RIG *rig,
2886  vfo_t vfo,
2887  ant_t ant,
2888  value_t *option,
2889  ant_t *ant_curr,
2890  ant_t *ant_tx,
2891  ant_t *ant_rx));
2892 
2893 extern HAMLIB_EXPORT(setting_t)
2894 rig_has_get_level HAMLIB_PARAMS((RIG *rig,
2895  setting_t level));
2896 extern HAMLIB_EXPORT(setting_t)
2897 rig_has_set_level HAMLIB_PARAMS((RIG *rig,
2898  setting_t level));
2899 
2900 extern HAMLIB_EXPORT(setting_t)
2901 rig_has_get_parm HAMLIB_PARAMS((RIG *rig,
2902  setting_t parm));
2903 extern HAMLIB_EXPORT(setting_t)
2904 rig_has_set_parm HAMLIB_PARAMS((RIG *rig,
2905  setting_t parm));
2906 
2907 extern HAMLIB_EXPORT(setting_t)
2908 rig_has_get_func HAMLIB_PARAMS((RIG *rig,
2909  setting_t func));
2910 extern HAMLIB_EXPORT(setting_t)
2911 rig_has_set_func HAMLIB_PARAMS((RIG *rig,
2912  setting_t func));
2913 
2914 extern HAMLIB_EXPORT(int)
2915 rig_set_func HAMLIB_PARAMS((RIG *rig,
2916  vfo_t vfo,
2917  setting_t func,
2918  int status));
2919 extern HAMLIB_EXPORT(int)
2920 rig_get_func HAMLIB_PARAMS((RIG *rig,
2921  vfo_t vfo,
2922  setting_t func,
2923  int *status));
2924 
2925 extern HAMLIB_EXPORT(int)
2926 rig_send_dtmf HAMLIB_PARAMS((RIG *rig,
2927  vfo_t vfo,
2928  const char *digits));
2929 extern HAMLIB_EXPORT(int)
2930 rig_recv_dtmf HAMLIB_PARAMS((RIG *rig,
2931  vfo_t vfo,
2932  char *digits,
2933  int *length));
2934 
2935 extern HAMLIB_EXPORT(int)
2936 rig_send_morse HAMLIB_PARAMS((RIG *rig,
2937  vfo_t vfo,
2938  const char *msg));
2939 
2940 extern HAMLIB_EXPORT(int)
2941 rig_stop_morse HAMLIB_PARAMS((RIG *rig,
2942  vfo_t vfo));
2943 
2944 extern HAMLIB_EXPORT(int)
2945 rig_wait_morse HAMLIB_PARAMS((RIG *rig,
2946  vfo_t vfo));
2947 
2948 extern HAMLIB_EXPORT(int)
2949 rig_send_voice_mem HAMLIB_PARAMS((RIG *rig,
2950  vfo_t vfo,
2951  int ch));
2952 
2953 extern HAMLIB_EXPORT(int)
2954 rig_set_bank HAMLIB_PARAMS((RIG *rig,
2955  vfo_t vfo,
2956  int bank));
2957 
2958 extern HAMLIB_EXPORT(int)
2959 rig_set_mem HAMLIB_PARAMS((RIG *rig,
2960  vfo_t vfo,
2961  int ch));
2962 extern HAMLIB_EXPORT(int)
2963 rig_get_mem HAMLIB_PARAMS((RIG *rig,
2964  vfo_t vfo,
2965  int *ch));
2966 
2967 extern HAMLIB_EXPORT(int)
2968 rig_vfo_op HAMLIB_PARAMS((RIG *rig,
2969  vfo_t vfo,
2970  vfo_op_t op));
2971 
2972 extern HAMLIB_EXPORT(vfo_op_t)
2973 rig_has_vfo_op HAMLIB_PARAMS((RIG *rig,
2974  vfo_op_t op));
2975 
2976 extern HAMLIB_EXPORT(int)
2977 rig_scan HAMLIB_PARAMS((RIG *rig,
2978  vfo_t vfo,
2979  scan_t scan,
2980  int ch));
2981 
2982 extern HAMLIB_EXPORT(scan_t)
2983 rig_has_scan HAMLIB_PARAMS((RIG *rig,
2984  scan_t scan));
2985 
2986 extern HAMLIB_EXPORT(int)
2987 rig_set_channel HAMLIB_PARAMS((RIG *rig,
2988  vfo_t vfo,
2989  const channel_t *chan)); /* mem */
2990 extern HAMLIB_EXPORT(int)
2991 rig_get_channel HAMLIB_PARAMS((RIG *rig,
2992  vfo_t vfo,
2993  channel_t *chan, int read_only));
2994 
2995 extern HAMLIB_EXPORT(int)
2996 rig_set_chan_all HAMLIB_PARAMS((RIG *rig,
2997  vfo_t vfo,
2998  const channel_t chans[]));
2999 extern HAMLIB_EXPORT(int)
3000 rig_get_chan_all HAMLIB_PARAMS((RIG *rig,
3001  vfo_t vfo,
3002  channel_t chans[]));
3003 
3004 extern HAMLIB_EXPORT(int)
3005 rig_set_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3006  vfo_t vfo,
3007  chan_cb_t chan_cb,
3008  rig_ptr_t));
3009 extern HAMLIB_EXPORT(int)
3010 rig_get_chan_all_cb HAMLIB_PARAMS((RIG *rig,
3011  vfo_t vfo,
3012  chan_cb_t chan_cb,
3013  rig_ptr_t));
3014 
3015 extern HAMLIB_EXPORT(int)
3016 rig_set_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3017  vfo_t vfo,
3018  chan_cb_t chan_cb,
3019  confval_cb_t parm_cb,
3020  rig_ptr_t));
3021 extern HAMLIB_EXPORT(int)
3022 rig_get_mem_all_cb HAMLIB_PARAMS((RIG *rig,
3023  vfo_t vfo,
3024  chan_cb_t chan_cb,
3025  confval_cb_t parm_cb,
3026  rig_ptr_t));
3027 
3028 extern HAMLIB_EXPORT(int)
3029 rig_set_mem_all HAMLIB_PARAMS((RIG *rig,
3030  vfo_t vfo,
3031  const channel_t *chan,
3032  const struct confparams *,
3033  const value_t *));
3034 extern HAMLIB_EXPORT(int)
3035 rig_get_mem_all HAMLIB_PARAMS((RIG *rig,
3036  vfo_t vfo,
3037  channel_t *chan,
3038  const struct confparams *,
3039  value_t *));
3040 
3041 extern HAMLIB_EXPORT(const chan_t *)
3042 rig_lookup_mem_caps HAMLIB_PARAMS((RIG *rig,
3043  int ch));
3044 
3045 extern HAMLIB_EXPORT(int)
3046 rig_mem_count HAMLIB_PARAMS((RIG *rig));
3047 
3048 extern HAMLIB_EXPORT(int)
3049 rig_set_trn HAMLIB_PARAMS((RIG *rig,
3050  int trn));
3051 extern HAMLIB_EXPORT(int)
3052 rig_get_trn HAMLIB_PARAMS((RIG *rig,
3053  int *trn));
3054 
3055 extern HAMLIB_EXPORT(int)
3056 rig_set_freq_callback HAMLIB_PARAMS((RIG *,
3057  freq_cb_t,
3058  rig_ptr_t));
3059 
3060 extern HAMLIB_EXPORT(int)
3061 rig_set_mode_callback HAMLIB_PARAMS((RIG *,
3062  mode_cb_t,
3063  rig_ptr_t));
3064 extern HAMLIB_EXPORT(int)
3065 rig_set_vfo_callback HAMLIB_PARAMS((RIG *,
3066  vfo_cb_t,
3067  rig_ptr_t));
3068 
3069 extern HAMLIB_EXPORT(int)
3070 rig_set_ptt_callback HAMLIB_PARAMS((RIG *,
3071  ptt_cb_t,
3072  rig_ptr_t));
3073 
3074 extern HAMLIB_EXPORT(int)
3075 rig_set_dcd_callback HAMLIB_PARAMS((RIG *,
3076  dcd_cb_t,
3077  rig_ptr_t));
3078 
3079 extern HAMLIB_EXPORT(int)
3080 rig_set_pltune_callback HAMLIB_PARAMS((RIG *,
3081  pltune_cb_t,
3082  rig_ptr_t));
3083 
3084 extern HAMLIB_EXPORT(int)
3085 rig_set_spectrum_callback HAMLIB_PARAMS((RIG *,
3086  spectrum_cb_t,
3087  rig_ptr_t));
3088 
3089 extern HAMLIB_EXPORT(int)
3090 rig_set_twiddle HAMLIB_PARAMS((RIG *rig,
3091  int seconds));
3092 
3093 extern HAMLIB_EXPORT(int)
3094 rig_get_twiddle HAMLIB_PARAMS((RIG *rig,
3095  int *seconds));
3096 
3097 extern HAMLIB_EXPORT(int)
3098 rig_set_uplink HAMLIB_PARAMS((RIG *rig,
3099  int val));
3100 
3101 extern HAMLIB_EXPORT(const char *)
3102 rig_get_info HAMLIB_PARAMS((RIG *rig));
3103 
3104 extern HAMLIB_EXPORT(const struct rig_caps *)
3105 rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model));
3106 
3107 extern HAMLIB_EXPORT(const freq_range_t *)
3108 rig_get_range HAMLIB_PARAMS((const freq_range_t *range_list,
3109  freq_t freq,
3110  rmode_t mode));
3111 
3112 extern HAMLIB_EXPORT(pbwidth_t)
3113 rig_passband_normal HAMLIB_PARAMS((RIG *rig,
3114  rmode_t mode));
3115 extern HAMLIB_EXPORT(pbwidth_t)
3116 rig_passband_narrow HAMLIB_PARAMS((RIG *rig,
3117  rmode_t mode));
3118 extern HAMLIB_EXPORT(pbwidth_t)
3119 rig_passband_wide HAMLIB_PARAMS((RIG *rig,
3120  rmode_t mode));
3121 
3122 extern HAMLIB_EXPORT(const char *)
3123 rigerror HAMLIB_PARAMS((int errnum));
3124 
3125 extern HAMLIB_EXPORT(int)
3126 rig_setting2idx HAMLIB_PARAMS((setting_t s));
3127 
3128 extern HAMLIB_EXPORT(setting_t)
3129 rig_idx2setting(int i);
3130 /*
3131  * Even if these functions are prefixed with "rig_", they are not rig specific
3132  * Maybe "hamlib_" would have been better. Let me know. --SF
3133  */
3134 extern HAMLIB_EXPORT(void)
3135 rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3136 
3137 extern HAMLIB_EXPORT(void)
3138 rig_set_debug_time_stamp HAMLIB_PARAMS((int flag));
3139 
3140 #define rig_set_debug_level(level) rig_set_debug(level)
3141 
3142 extern HAMLIB_EXPORT(int)
3143 rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level));
3144 
3145 
3146 // this need to be fairly big to avoid compiler warnings
3147 #define DEBUGMSGSAVE_SIZE 24000
3148 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg
3149 extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg
3150 extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg
3151 #ifndef __cplusplus
3152 #ifdef __GNUC__
3153 // doing the debug macro with a dummy sprintf allows gcc to check the format string
3154 #define rig_debug(debug_level,fmt,...) do { strncpy(debugmsgsave3, debugmsgsave2,sizeof(debugmsgsave3));strncpy(debugmsgsave2, debugmsgsave, sizeof(debugmsgsave2));snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0);
3155 #endif
3156 #endif
3157 
3158 // Measuring elapsed time -- local variable inside function when macro is used
3159 #define ELAPSED1 struct timespec __begin; elapsed_ms(&__begin, HAMLIB_ELAPSED_SET);
3160 #define ELAPSED2 rig_debug(RIG_DEBUG_TRACE, "%s: elapsed=%.0lfms\n", __func__, elapsed_ms(&__begin, HAMLIB_ELAPSED_GET));
3161 
3162 // use this instead of snprintf for automatic detection of buffer limit
3163 #define SNPRINTF(s,n,...) { snprintf(s,n,##__VA_ARGS__);if (strlen(s) >= n-1) printf("%s(%d): buffer limit reached\n", __func__, __LINE__); }
3164 
3165 extern HAMLIB_EXPORT(void)
3166 rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level,
3167  const char *fmt, ...));
3168 
3169 extern HAMLIB_EXPORT(vprintf_cb_t)
3170 rig_set_debug_callback HAMLIB_PARAMS((vprintf_cb_t cb,
3171  rig_ptr_t arg));
3172 
3173 extern HAMLIB_EXPORT(FILE *)
3174 rig_set_debug_file HAMLIB_PARAMS((FILE *stream));
3175 
3176 extern HAMLIB_EXPORT(int)
3177 rig_register HAMLIB_PARAMS((const struct rig_caps *caps));
3178 
3179 extern HAMLIB_EXPORT(int)
3180 rig_unregister HAMLIB_PARAMS((rig_model_t rig_model));
3181 
3182 extern HAMLIB_EXPORT(int)
3183 rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps *, rig_ptr_t),
3184  rig_ptr_t data));
3185 
3186 extern HAMLIB_EXPORT(int)
3187 rig_list_foreach_model HAMLIB_PARAMS((int (*cfunc)(const rig_model_t rig_model, rig_ptr_t),
3188  rig_ptr_t data));
3189 
3190 extern HAMLIB_EXPORT(int)
3191 rig_load_backend HAMLIB_PARAMS((const char *be_name));
3192 
3193 extern HAMLIB_EXPORT(int)
3194 rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model));
3195 
3196 extern HAMLIB_EXPORT(int)
3197 rig_load_all_backends HAMLIB_PARAMS((void));
3198 
3199 typedef int (*rig_probe_func_t)(const hamlib_port_t *, rig_model_t, rig_ptr_t);
3200 
3201 extern HAMLIB_EXPORT(int)
3202 rig_probe_all HAMLIB_PARAMS((hamlib_port_t *p,
3203  rig_probe_func_t,
3204  rig_ptr_t));
3205 
3206 extern HAMLIB_EXPORT(rig_model_t)
3207 rig_probe HAMLIB_PARAMS((hamlib_port_t *p));
3208 
3209 
3210 /* Misc calls */
3211 extern HAMLIB_EXPORT(const char *) rig_strrmode(rmode_t mode);
3212 extern HAMLIB_EXPORT(int) rig_strrmodes(rmode_t modes, char *buf, int buflen);
3213 extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo);
3214 extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t);
3215 extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t);
3216 extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t);
3217 extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level);
3218 extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcstr (char *agcString);
3219 extern HAMLIB_EXPORT(enum agc_level_e) rig_levelagcvalue (int agcValue);
3220 extern HAMLIB_EXPORT(value_t) rig_valueagclevel (enum agc_level_e agcLevel);
3221 extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t);
3222 extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op);
3223 extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan);
3224 extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status);
3225 extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype);
3226 extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode);
3227 
3228 extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s);
3229 extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s);
3230 extern HAMLIB_EXPORT(setting_t) rig_parse_func(const char *s);
3231 extern HAMLIB_EXPORT(setting_t) rig_parse_level(const char *s);
3232 extern HAMLIB_EXPORT(setting_t) rig_parse_parm(const char *s);
3233 extern HAMLIB_EXPORT(vfo_op_t) rig_parse_vfo_op(const char *s);
3234 extern HAMLIB_EXPORT(scan_t) rig_parse_scan(const char *s);
3235 extern HAMLIB_EXPORT(rptr_shift_t) rig_parse_rptr_shift(const char *s);
3236 extern HAMLIB_EXPORT(chan_type_t) rig_parse_mtype(const char *s);
3237 
3238 extern HAMLIB_EXPORT(const char *) rig_license HAMLIB_PARAMS(());
3239 extern HAMLIB_EXPORT(const char *) rig_version HAMLIB_PARAMS(());
3240 extern HAMLIB_EXPORT(const char *) rig_copyright HAMLIB_PARAMS(());
3241 
3242 extern HAMLIB_EXPORT(void) rig_no_restore_ai();
3243 
3244 extern HAMLIB_EXPORT(int) rig_get_cache_timeout_ms(RIG *rig, hamlib_cache_t selection);
3245 extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t selection, int ms);
3246 
3247 extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status);
3248 extern HAMLIB_EXPORT(int) rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split, int *satmode);
3249 extern HAMLIB_EXPORT(int) rig_get_rig_info(RIG *rig, char *response, int max_response_len);
3250 extern HAMLIB_EXPORT(int) rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width);
3251 
3252 extern HAMLIB_EXPORT(int) rig_set_clock(RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset);
3253 extern HAMLIB_EXPORT(int) rig_get_clock(RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset);
3254 
3255 typedef unsigned long rig_useconds_t;
3256 extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec);
3257 
3258 extern HAMLIB_EXPORT(int) rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len);
3259 
3260 //extern HAMLIB_EXPORT(int)
3261 int longlat2locator HAMLIB_PARAMS((double longitude,
3262  double latitude,
3263  char *locator_res,
3264  int pair_count));
3265 
3266 //extern HAMLIB_EXPORT(int)
3267 int locator2longlat HAMLIB_PARAMS((double *longitude,
3268  double *latitude,
3269  const char *locator));
3270 
3271 
3273 
3274 __END_DECLS
3275 
3276 #endif /* _RIG_H */
3277 
setting_t rig_parse_parm(const char *s)
Convert alpha string to RIG_PARM_...
Definition: misc.c:1163
vfo_t rig_parse_vfo(const char *s)
Convert alpha string to enum RIG_VFO_...
Definition: misc.c:635
enum agc_level_e rig_levelagcstr(char *agcString)
Convert AGC string... to agc_level_e.
Definition: misc.c:1362
const char * rig_strparm(setting_t parm)
Convert enum RIG_PARM_... to alpha string.
Definition: misc.c:1213
const char * rig_strptrshift(rptr_shift_t shift)
convert enum RIG_RPT_SHIFT_... to printable character
Definition: misc.c:1532
int rig_strrmodes(rmode_t modes, char *buf, int buflen)
Convert RIG_MODE or'd value to alpha string of all modes.
Definition: misc.c:568
rptr_shift_t rig_parse_rptr_shift(const char *s)
Convert alpha char to enum RIG_RPT_SHIFT_...
Definition: misc.c:1557
value_t rig_valueagclevel(enum agc_level_e agcLevel)
Convert a enum agc_level_e to value.
Definition: misc.c:1311
uint64_t rig_idx2setting(int i)
Definition: misc.c:754
const char * rig_strstatus(enum rig_status_e status)
Convert enum RIG_STATUS_... to printable string.
Definition: misc.c:427
chan_type_t rig_parse_mtype(const char *s)
Convert alpha string to enum RIG_MTYPE_...
Definition: misc.c:1600
const char * rig_strmtype(chan_type_t mtype)
Convert enum RIG_MTYPE_... to alpha string.
Definition: misc.c:1625
enum agc_level_e rig_levelagcvalue(int agcValue)
Convert a value to agc_level_e – constrains the range.
Definition: misc.c:1331
const char * rig_strspectrummode(enum rig_spectrum_mode_e mode)
Convert enum RIG_SPECTRUM_MODE_... to alpha string.
Definition: misc.c:1665
const char * rig_strrmode(rmode_t mode)
Convert enum RIG_MODE to alpha string.
Definition: misc.c:536
const char * rig_strscan(scan_t rscan)
Convert enum RIG_SCAN_... to alpha string.
Definition: misc.c:1503
setting_t rig_parse_level(const char *s)
Convert alpha string to enum RIG_LEVEL_...
Definition: misc.c:964
scan_t rig_parse_scan(const char *s)
Convert alpha string to enum RIG_SCAN_...
Definition: misc.c:1478
const char * rig_stragclevel(enum agc_level_e level)
Convert enum RIG_AGC_... to alpha string.
Definition: misc.c:1286
setting_t rig_parse_func(const char *s)
Convert alpha string to enum RIG_FUNC_...
Definition: misc.c:766
const char * rig_strvfo(vfo_t vfo)
Convert enum RIG_VFO_... to alpha string.
Definition: misc.c:664
rmode_t rig_parse_mode(const char *s)
Convert alpha string to enum RIG_MODE.
Definition: misc.c:510
const char * rig_strvfop(vfo_op_t op)
Convert enum RIG_OP_... to alpha string.
Definition: misc.c:1433
const char * rig_strlevel(setting_t level)
Convert enum RIG_LEVEL_... to alpha string.
Definition: misc.c:1045
const char * rig_strfunc(setting_t func)
Convert enum RIG_FUNC_... to alpha string.
Definition: misc.c:816
vfo_op_t rig_parse_vfo_op(const char *s)
Convert alpha string to enum RIG_OP_...
Definition: misc.c:1408
int rig_set_vfo(RIG *rig, vfo_t vfo)
set the current VFO
Definition: rig.c:2376
unsigned int vfo_t
VFO definition.
Definition: rig.h:446
int rig_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *tx_freq, rmode_t *tx_mode, pbwidth_t *tx_width)
get the current split frequency and mode
Definition: rig.c:4340
int rig_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val)
set a radio level extra parameter
Definition: settings.c:612
int rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits)
send DTMF digits
Definition: rig.c:5855
int rig_set_twiddle(RIG *rig, int seconds)
timeout (secs) to stop rigctld when VFO is manually changed
Definition: rig.c:1358
meter_level_e
Level display meters.
Definition: rig.h:861
int rig_get_rig_info(RIG *rig, char *response, int max_response_len)
get freq/mode/width for requested VFO
Definition: rig.c:6453
int rig_get_mem_all(RIG *rig, vfo_t vfo, channel_t chans[], const struct confparams cfgps[], value_t vals[])
get all channel and non-channel data
Definition: mem.c:1531
int rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
get the status of the DCD
Definition: rig.c:3174
serial_parity_e
Serial parity.
Definition: rig.h:264
int rig_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo)
get the current split mode
Definition: rig.c:4556
int rig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
Definition: rig.c:2072
int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width)
get cached values for a VFO
Definition: cache.c:232
int rig_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan)
set channel data
Definition: mem.c:688
int rig_set_split_vfo(RIG *rig, vfo_t rx_vfo, split_t split, vfo_t tx_vfo)
set the split mode
Definition: rig.c:4400
dcd_e
DCD status.
Definition: rig.h:583
int rig_set_freq_callback(RIG *rig, freq_cb_t cb, rig_ptr_t arg)
set the callback for freq events
Definition: event.c:345
const char * hamlib_copyright2
Hamlib copyright notice.
Definition: rig.c:105
int rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)
get the current repeater offset
Definition: rig.c:3506
int rig_set_powerstat(RIG *rig, powerstat_t status)
turn on/off the radio
Definition: rig.c:5466
int rig_get_powerstat(RIG *rig, powerstat_t *status)
get the on/off status of the radio
Definition: rig.c:5503
int rig_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code)
set the current DCS code
Definition: tones.c:491
serial_control_state_e
Serial control state.
Definition: rig.h:286
int rig_set_mem(RIG *rig, vfo_t vfo, int ch)
set the current memory channel number
Definition: mem.c:72
int rig_power2mW(RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode)
conversion utility from relative range to absolute in mW
Definition: rig.c:5313
setting_t rig_has_set_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:444
int rig_get_vfo(RIG *rig, vfo_t *vfo)
get the current VFO
Definition: rig.c:2516
int rig_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t tx_freq, rmode_t tx_mode, pbwidth_t tx_width)
set the split frequency and mode
Definition: rig.c:4222
uint64_t rmode_t
Radio mode.
Definition: rig.h:1198
int rig_set_vfo_callback(RIG *rig, vfo_cb_t cb, rig_ptr_t arg)
set the callback for vfo events
Definition: event.c:401
shortfreq_t pbwidth_t
Definition: rig.h:577
int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
set a radio level setting
Definition: settings.c:71
int rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
get the current RIT offset
Definition: rig.c:4765
int rig_cleanup(RIG *rig)
release a rig handle and free associated memory
Definition: rig.c:1314
rig_type_t
Rig type flags.
Definition: rig.h:296
int rig_get_mem(RIG *rig, vfo_t vfo, int *ch)
get the current memory channel number
Definition: mem.c:135
int rig_set_mem_all(RIG *rig, vfo_t vfo, const channel_t chans[], const struct confparams cfgps[], const value_t vals[])
set all channel and non-channel data
Definition: mem.c:1463
enum rig_port_e rig_port_t
Port type.
split_t
Split mode.
Definition: rig.h:375
int rig_get_vfo_list(RIG *rig, char *buf, int buflen)
get list of available vfos
Definition: rig.c:6614
rptr_shift_t
Repeater shift type.
Definition: rig.h:365
int rig_set_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
set all channel and non-channel data by call-back
Definition: mem.c:1329
int rig_get_dcs_sql(RIG *rig, vfo_t vfo, tone_t *code)
get the current DCS code
Definition: tones.c:553
scan_t rig_has_scan(RIG *rig, scan_t scan)
check availability of scanning functions
Definition: rig.c:5752
ptt_type_t
PTT type.
Definition: rig.h:623
int rig_get_clock(RIG *rig, int *year, int *month, int *day, int *hour, int *min, int *sec, double *msec, int *utc_offset)
get the rig's clock
Definition: rig.c:6648
int rig_get_mem_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, confval_cb_t parm_cb, rig_ptr_t arg)
get all channel and non-channel data by call-back
Definition: mem.c:1397
token_t rig_token_lookup(RIG *rig, const char *name)
lookup a token id
Definition: conf.c:1163
int rig_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS squelch
Definition: tones.c:362
ann_t
Announce.
Definition: rig.h:781
int rig_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code)
set the current encoding DCS code
Definition: tones.c:230
int rig_set_dcd_callback(RIG *rig, dcd_cb_t cb, rig_ptr_t arg)
set the callback for dcd events
Definition: event.c:457
int rig_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val)
get the value of a level extra parameter
Definition: settings.c:678
int rig_get_channel(RIG *rig, vfo_t vfox, channel_t *chan, int read_only)
get channel data
Definition: mem.c:832
int rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
get the frequency of the target VFO
Definition: rig.c:1705
int rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
activate/de-activate functions of radio
Definition: settings.c:475
int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
get the status of the PTT
Definition: rig.c:2891
int rig_get_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
get all channel data, by callback
Definition: mem.c:1129
int rig_mW2power(RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)
conversion utility from absolute in mW to relative range
Definition: rig.c:5369
int rig_set_bank(RIG *rig, vfo_t vfo, int bank)
set the current memory bank
Definition: mem.c:198
int rig_ext_func_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extfuncs table.
Definition: ext.c:86
int rig_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS squelch
Definition: tones.c:429
int rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit)
get the current XIT offset
Definition: rig.c:4913
int rig_set_spectrum_callback(RIG *rig, spectrum_cb_t cb, rig_ptr_t arg)
set the callback for spectrum line reception events
Definition: event.c:515
int rig_get_parm(RIG *rig, setting_t parm, value_t *val)
get the value of a parameter
Definition: settings.c:262
int rig_get_trn(RIG *rig, int *trn)
get the current transceive mode
Definition: event.c:572
int rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)
set the repeater offset
Definition: rig.c:3436
int rig_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
get the current CTCSS sub-tone frequency
Definition: tones.c:167
int rig_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
set a radio function extra parameter
Definition: settings.c:743
const struct confparams * rig_confparam_lookup(RIG *rig, const char *name)
lookup a confparam struct
Definition: conf.c:1107
setting_t rig_has_set_level(RIG *rig, setting_t level)
check settable ability of level settings
Definition: settings.c:326
rig_parm_e
Rig Parameters.
Definition: rig.h:990
int rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
set the antenna
Definition: rig.c:5142
const char * rigerror(int errnum)
get string describing the error code
Definition: rig.c:327
void rig_set_debug_time_stamp(int flag)
Enable or disable the time stamp on debugging output.
Definition: debug.c:184
shortfreq_t rig_get_resolution(RIG *rig, rmode_t mode)
get the best frequency resolution of the rig
Definition: rig.c:5425
int rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split, int *satmode)
get freq/mode/width for requested VFO
Definition: rig.c:6547
pbwidth_t rig_passband_wide(RIG *rig, rmode_t mode)
get the wide passband of a mode
Definition: rig.c:2319
int hl_usleep(rig_useconds_t usec)
provide sleep and usleep replacements
Definition: sleep.c:53
uint64_t setting_t
Setting.
Definition: rig.h:1040
powerstat_t
Radio power state.
Definition: rig.h:639
multicast_item_e
Multicast data items 3 different data item can be included in the multicast JSON.
Definition: rig.h:1020
setting_t rig_has_get_func(RIG *rig, setting_t func)
check ability of radio functions
Definition: settings.c:414
int rig_set_uplink(RIG *rig, int val)
For GPredict to avoid reading frequency on uplink VFO.
Definition: rig.c:1383
enum dcd_e dcd_t
DCD status.
int rig_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
get the status of functions of the radio
Definition: settings.c:548
int rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
set the split frequencies
Definition: rig.c:3581
int rig_probe_all(hamlib_port_t *port, rig_probe_func_t cfunc, rig_ptr_t data)
try to guess rigs
Definition: rig.c:5618
rig_errcode_e
Hamlib error codes Error code definition that can be returned by the Hamlib functions....
Definition: rig.h:132
int rig_ext_parm_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extparms table.
Definition: ext.c:186
rig_conf_e
parameter types
Definition: rig.h:739
scan_t
Rig Scan operation.
Definition: rig.h:701
int rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch)
send voice memory content
Definition: rig.c:6246
int rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
receive DTMF digits
Definition: rig.c:5931
int rig_set_mode_callback(RIG *rig, mode_cb_t cb, rig_ptr_t arg)
set the callback for mode events
Definition: event.c:373
int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
set the frequency of the target VFO
Definition: rig.c:1487
int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
set PTT on/off
Definition: rig.c:2599
int rig_get_conf(RIG *rig, token_t token, char *val)
get the value of a configuration parameter
Definition: conf.c:1247
double freq_t
Frequency type,.
Definition: rig.h:386
int rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
perform Memory/VFO operations
Definition: rig.c:5784
cookie_e
Rig Cookie enumerations.
Definition: rig.h:1010
int rig_send_morse(RIG *rig, vfo_t vfo, const char *msg)
send morse code
Definition: rig.c:6006
int rig_setting2idx(setting_t s)
basically convert setting_t expressed 2^n to n
Definition: settings.c:933
int rig_get_ext_parm(RIG *rig, token_t token, value_t *val)
get the value of a parm extra parameter
Definition: settings.c:906
int rig_mem_count(RIG *rig)
get memory channel count
Definition: mem.c:1656
ptt_t
PTT status.
Definition: rig.h:610
RIG * rig_init(rig_model_t rig_model)
allocate a new RIG handle
Definition: rig.c:393
setting_t rig_has_get_parm(RIG *rig, setting_t parm)
check retrieval ability of parameter settings
Definition: settings.c:356
int rig_ext_level_foreach(RIG *rig, int(*cfunc)(RIG *, const struct confparams *, rig_ptr_t), rig_ptr_t data)
Executes cfunc on all the elements stored in the extlevels table.
Definition: ext.c:136
int rig_set_pltune_callback(RIG *rig, pltune_cb_t cb, rig_ptr_t arg)
set the callback for pipelined tuning module
Definition: event.c:487
struct freq_range_list freq_range_t
Frequency range.
int rig_set_clock(RIG *rig, int year, int month, int day, int hour, int min, int sec, double msec, int utc_offset)
set the rig's clock
Definition: rig.c:6632
int rig_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
set CTCSS sub-tone frequency
Definition: tones.c:100
int rig_set_ext_parm(RIG *rig, token_t token, value_t val)
set a radio parm extra parameter
Definition: settings.c:874
int rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
set the mode of the target VFO
Definition: rig.c:1958
vfo_op_t
VFO operation.
Definition: rig.h:675
int rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts)
get the current Tuning Step
Definition: rig.c:5061
FILE * rig_set_debug_file(FILE *stream)
Change the output stream from stderr a different stream.
Definition: debug.c:328
signed long shortfreq_t
Short frequency type.
Definition: rig.h:408
token_t rig_ext_token_lookup(RIG *rig, const char *name)
Simple lookup returning token id associated with name.
Definition: ext.c:327
vprintf_cb_t rig_set_debug_callback(vprintf_cb_t cb, rig_ptr_t arg)
Set callback to handle debugging messages.
Definition: debug.c:310
const char * rig_version()
get the Hamlib version
Definition: rig.c:6678
int rig_set_conf(RIG *rig, token_t token, const char *val)
set a radio configuration parameter
Definition: conf.c:1194
int rig_need_debug(enum rig_debug_level_e debug_level)
Test if a given debug level is active.
Definition: debug.c:170
rig_port_e
Port type.
Definition: rig.h:243
int rig_wait_morse(RIG *rig, vfo_t vfo)
wait morse code
Definition: rig.c:6182
int rig_close(RIG *rig)
close the communication to the rig
Definition: rig.c:1158
pbwidth_t rig_passband_narrow(RIG *rig, rmode_t mode)
get the narrow passband of a mode
Definition: rig.c:2267
serial_handshake_e
Serial handshake.
Definition: rig.h:276
int rig_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
get the value of a function extra parameter
Definition: settings.c:809
const chan_t * rig_lookup_mem_caps(RIG *rig, int ch)
lookup the memory type and capabilities
Definition: mem.c:1590
agc_level_e
AGC delay settings.
Definition: rig.h:314
dcd_type_t
DCD type.
Definition: rig.h:594
int rig_get_chan_all(RIG *rig, vfo_t vfo, channel_t chans[])
get all channel data
Definition: mem.c:1213
int rig_set_chan_all(RIG *rig, vfo_t vfo, const channel_t chans[])
set all channel data
Definition: mem.c:1170
int rig_set_vfo_opt(RIG *rig, int status)
set the vfo option for rigctld
Definition: rig.c:6351
int rig_set_ptt_callback(RIG *rig, ptt_cb_t cb, rig_ptr_t arg)
set the callback for ptt events
Definition: event.c:429
pbwidth_t rig_passband_normal(RIG *rig, rmode_t mode)
get the normal passband of a mode
Definition: rig.c:2217
rig_debug_level_e
Hamlib debug levels.
Definition: rig.h:176
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition: rig.h:1046
const struct confparams * rig_ext_lookup_tok(RIG *rig, token_t token)
lookup ext token, return pointer to confparams struct.
Definition: ext.c:283
setting_t rig_has_set_parm(RIG *rig, setting_t parm)
check settable ability of parameter settings
Definition: settings.c:385
const char * rig_license()
get the Hamlib license
Definition: rig.c:6668
int rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit)
set the RIT
Definition: rig.c:4694
const char * rig_copyright()
get the Hamlib copyright
Definition: rig.c:6688
int rig_get_twiddle(RIG *rig, int *seconds)
get the twiddle timeout value (secs)
Definition: rig.c:1409
int rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
set the Tuning Step
Definition: rig.c:4990
int rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, ant_t *ant_curr, ant_t *ant_tx, ant_t *ant_rx)
get the current antenna
Definition: rig.c:5221
int rig_open(RIG *rig)
open the communication to the rig
Definition: rig.c:698
int rig_set_parm(RIG *rig, setting_t parm, value_t val)
set a radio parameter
Definition: settings.c:228
int rig_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code)
get the current encoding DCS code
Definition: tones.c:292
hamlib_port_t port_t
Rig data structure.
Definition: rig.h:2239
int rig_stop_morse(RIG *rig, vfo_t vfo)
stop morse code
Definition: rig.c:6078
const struct confparams * rig_ext_lookup(RIG *rig, const char *name)
lookup ext token by its name, return pointer to confparams struct.
Definition: ext.c:236
const char * rig_get_info(RIG *rig)
get general information from the radio
Definition: rig.c:6384
setting_t rig_has_get_level(RIG *rig, setting_t level)
check retrieval ability of level settings
Definition: settings.c:296
uint64_t rig_level_e
Rig Level Settings.
Definition: rig.h:901
long token_t
configuration token
Definition: rig.h:717
int rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
get the value of a level
Definition: settings.c:141
int rig_set_chan_all_cb(RIG *rig, vfo_t vfo, chan_cb_t chan_cb, rig_ptr_t arg)
set all channel data, by callback
Definition: mem.c:1082
int rig_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)
set the split modes
Definition: rig.c:3898
int rig_reset(RIG *rig, reset_t reset)
reset the radio
Definition: rig.c:5544
int rig_token_foreach(RIG *rig, int(*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)
call a function against each configuration token of a rig
Definition: conf.c:1053
int rig_set_trn(RIG *rig, int trn)
control the transceive mode
Definition: event.c:548
vfo_op_t rig_has_vfo_op(RIG *rig, vfo_op_t op)
check retrieval ability of VFO operations
Definition: rig.c:5649
unsigned int ant_t
Antenna typedef.
Definition: rig.h:838
int rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
get the current repeater shift
Definition: rig.c:3360
int rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)
get the current split modes
Definition: rig.c:4086
int rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
set the repeater shift
Definition: rig.c:3289
reset_t
Reset operation.
Definition: rig.h:651
int rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
get the current split frequencies
Definition: rig.c:3745
void rig_set_debug(enum rig_debug_level_e debug_level)
Change the current debug level.
Definition: debug.c:154
int rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
perform Memory/VFO operations
Definition: rig.c:5680
rig_status_e
Development status of the backend.
Definition: rig.h:345
int rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit)
set the XIT
Definition: rig.c:4842
void rig_debug(enum rig_debug_level_e debug_level, const char *fmt,...)
Print debugging messages through stderr by default.
Definition: debug.c:202
int rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie, int cookie_len)
get a cookie to grab rig control
Definition: rig.c:6727
rig_spectrum_mode_e
Spectrum scope modes.
Definition: rig.h:1646
rig_model_t rig_probe(hamlib_port_t *port)
try to guess a rig
Definition: rig.c:5588
const freq_range_t * rig_get_range(const freq_range_t *range_list, freq_t freq, rmode_t mode)
find the freq_range of freq/mode
Definition: rig.c:6315
chan_type_t
Memory channel type definition.
Definition: rig.h:1497
@ RIG_PARITY_MARK
Definition: rig.h:268
@ RIG_PARITY_NONE
Definition: rig.h:265
@ RIG_PARITY_EVEN
Definition: rig.h:267
@ RIG_PARITY_SPACE
Definition: rig.h:269
@ RIG_PARITY_ODD
Definition: rig.h:266
@ RIG_DCD_ON
Definition: rig.h:585
@ RIG_DCD_OFF
Definition: rig.h:584
@ RIG_SIGNAL_ON
Definition: rig.h:288
@ RIG_SIGNAL_OFF
Definition: rig.h:289
@ RIG_SIGNAL_UNSET
Definition: rig.h:287
@ RIG_FLAG_COMPUTER
Definition: rig.h:302
@ RIG_FLAG_TUNER
Definition: rig.h:307
@ RIG_FLAG_SCANNER
Definition: rig.h:299
@ RIG_FLAG_TRANSMITTER
Definition: rig.h:298
@ RIG_FLAG_MOBILE
Definition: rig.h:300
@ RIG_FLAG_TRUNKING
Definition: rig.h:303
@ RIG_FLAG_APRS
Definition: rig.h:304
@ RIG_FLAG_TNC
Definition: rig.h:305
@ RIG_FLAG_HANDHELD
Definition: rig.h:301
@ RIG_FLAG_DXCLUSTER
Definition: rig.h:306
@ RIG_FLAG_RECEIVER
Definition: rig.h:297
@ RIG_SPLIT_ON
Definition: rig.h:377
@ RIG_SPLIT_OFF
Definition: rig.h:376
@ RIG_RPT_SHIFT_PLUS
Definition: rig.h:368
@ RIG_RPT_SHIFT_MINUS
Definition: rig.h:367
@ RIG_RPT_SHIFT_NONE
Definition: rig.h:366
@ RIG_PTT_RIG
Definition: rig.h:625
@ RIG_PTT_RIG_MICDATA
Definition: rig.h:629
@ RIG_PTT_SERIAL_DTR
Definition: rig.h:626
@ RIG_PTT_NONE
Definition: rig.h:624
@ RIG_PTT_PARALLEL
Definition: rig.h:628
@ RIG_PTT_GPION
Definition: rig.h:632
@ RIG_PTT_GPIO
Definition: rig.h:631
@ RIG_PTT_CM108
Definition: rig.h:630
@ RIG_PTT_SERIAL_RTS
Definition: rig.h:627
@ RIG_ANN_RXMODE
Definition: rig.h:785
@ RIG_ANN_OFF
Definition: rig.h:783
@ RIG_ANN_ENG
Definition: rig.h:787
@ RIG_ANN_FREQ
Definition: rig.h:784
@ RIG_ANN_NONE
Definition: rig.h:782
@ RIG_ANN_CW
Definition: rig.h:786
@ RIG_ANN_JAP
Definition: rig.h:788
@ RIG_PARM_BEEP
Definition: rig.h:995
@ RIG_PARM_TIME
Definition: rig.h:996
@ RIG_PARM_SCREENSAVER
Definition: rig.h:999
@ RIG_PARM_ANN
Definition: rig.h:992
@ RIG_PARM_NONE
Definition: rig.h:991
@ RIG_PARM_BACKLIGHT
Definition: rig.h:994
@ RIG_PARM_KEYLIGHT
Definition: rig.h:998
@ RIG_PARM_BAT
Definition: rig.h:997
@ RIG_PARM_APO
Definition: rig.h:993
@ RIG_POWER_OPERATE
Definition: rig.h:643
@ RIG_POWER_UNKNOWN
Definition: rig.h:644
@ RIG_POWER_STANDBY
Definition: rig.h:642
@ RIG_POWER_OFF
Definition: rig.h:640
@ RIG_POWER_ON
Definition: rig.h:641
@ RIG_ENIMPL
Definition: rig.h:137
@ RIG_ECONF
Definition: rig.h:135
@ RIG_ENAVAIL
Definition: rig.h:144
@ RIG_OK
Definition: rig.h:133
@ RIG_EPROTO
Definition: rig.h:141
@ RIG_EINTERNAL
Definition: rig.h:140
@ RIG_EDOM
Definition: rig.h:150
@ RIG_EIO
Definition: rig.h:139
@ RIG_EVFO
Definition: rig.h:149
@ RIG_ETIMEOUT
Definition: rig.h:138
@ RIG_ENOMEM
Definition: rig.h:136
@ RIG_EARG
Definition: rig.h:148
@ RIG_ERJCTED
Definition: rig.h:142
@ RIG_BUSERROR
Definition: rig.h:146
@ RIG_BUSBUSY
Definition: rig.h:147
@ RIG_EDEPRECATED
Definition: rig.h:151
@ RIG_ENTARGET
Definition: rig.h:145
@ RIG_EINVAL
Definition: rig.h:134
@ RIG_ETRUNC
Definition: rig.h:143
@ RIG_CONF_STRING
Definition: rig.h:740
@ RIG_CONF_BUTTON
Definition: rig.h:744
@ RIG_CONF_CHECKBUTTON
Definition: rig.h:743
@ RIG_CONF_BINARY
Definition: rig.h:745
@ RIG_CONF_COMBO
Definition: rig.h:741
@ RIG_CONF_NUMERIC
Definition: rig.h:742
@ RIG_SCAN_DELTA
Definition: rig.h:707
@ RIG_SCAN_PLT
Definition: rig.h:709
@ RIG_SCAN_PROG
Definition: rig.h:706
@ RIG_SCAN_MEM
Definition: rig.h:703
@ RIG_SCAN_NONE
Definition: rig.h:702
@ RIG_SCAN_VFO
Definition: rig.h:708
@ RIG_SCAN_PRIO
Definition: rig.h:705
@ RIG_SCAN_SLCT
Definition: rig.h:704
@ RIG_SCAN_STOP
Definition: rig.h:710
@ RIG_COOKIE_RENEW
Definition: rig.h:1013
@ RIG_COOKIE_RELEASE
Definition: rig.h:1012
@ RIG_COOKIE_GET
Definition: rig.h:1011
@ RIG_PTT_OFF
Definition: rig.h:611
@ RIG_PTT_ON_DATA
Definition: rig.h:614
@ RIG_PTT_ON_MIC
Definition: rig.h:613
@ RIG_PTT_ON
Definition: rig.h:612
@ RIG_OP_CPY
Definition: rig.h:677
@ RIG_OP_DOWN
Definition: rig.h:683
@ RIG_OP_TO_VFO
Definition: rig.h:680
@ RIG_OP_TUNE
Definition: rig.h:688
@ RIG_OP_FROM_VFO
Definition: rig.h:679
@ RIG_OP_MCL
Definition: rig.h:681
@ RIG_OP_RIGHT
Definition: rig.h:687
@ RIG_OP_UP
Definition: rig.h:682
@ RIG_OP_TOGGLE
Definition: rig.h:689
@ RIG_OP_NONE
Definition: rig.h:676
@ RIG_OP_BAND_UP
Definition: rig.h:684
@ RIG_OP_BAND_DOWN
Definition: rig.h:685
@ RIG_OP_LEFT
Definition: rig.h:686
@ RIG_OP_XCHG
Definition: rig.h:678
@ RIG_PORT_PACKET
Definition: rig.h:248
@ RIG_PORT_UDP_NETWORK
Definition: rig.h:254
@ RIG_PORT_NONE
Definition: rig.h:244
@ RIG_PORT_CM108
Definition: rig.h:255
@ RIG_PORT_GPIO
Definition: rig.h:256
@ RIG_PORT_ULTRA
Definition: rig.h:250
@ RIG_PORT_GPION
Definition: rig.h:257
@ RIG_PORT_SERIAL
Definition: rig.h:245
@ RIG_PORT_PARALLEL
Definition: rig.h:252
@ RIG_PORT_NETWORK
Definition: rig.h:246
@ RIG_PORT_DEVICE
Definition: rig.h:247
@ RIG_PORT_RPC
Definition: rig.h:251
@ RIG_PORT_DTMF
Definition: rig.h:249
@ RIG_PORT_USB
Definition: rig.h:253
@ RIG_HANDSHAKE_HARDWARE
Definition: rig.h:279
@ RIG_HANDSHAKE_NONE
Definition: rig.h:277
@ RIG_HANDSHAKE_XONXOFF
Definition: rig.h:278
@ RIG_AGC_USER
Definition: rig.h:319
@ RIG_DCD_SERIAL_CTS
Definition: rig.h:598
@ RIG_DCD_PARALLEL
Definition: rig.h:600
@ RIG_DCD_CM108
Definition: rig.h:601
@ RIG_DCD_RIG
Definition: rig.h:596
@ RIG_DCD_GPION
Definition: rig.h:603
@ RIG_DCD_NONE
Definition: rig.h:595
@ RIG_DCD_SERIAL_DSR
Definition: rig.h:597
@ RIG_DCD_GPIO
Definition: rig.h:602
@ RIG_DCD_SERIAL_CAR
Definition: rig.h:599
@ RIG_DEBUG_ERR
Definition: rig.h:179
@ RIG_DEBUG_BUG
Definition: rig.h:178
@ RIG_DEBUG_WARN
Definition: rig.h:180
@ RIG_DEBUG_TRACE
Definition: rig.h:182
@ RIG_DEBUG_VERBOSE
Definition: rig.h:181
@ RIG_DEBUG_CACHE
Definition: rig.h:183
@ RIG_DEBUG_NONE
Definition: rig.h:177
@ RIG_RESET_MCALL
Definition: rig.h:655
@ RIG_RESET_MASTER
Definition: rig.h:656
@ RIG_RESET_NONE
Definition: rig.h:652
@ RIG_RESET_VFO
Definition: rig.h:654
@ RIG_RESET_SOFT
Definition: rig.h:653
@ RIG_STATUS_STABLE
Definition: rig.h:349
@ RIG_STATUS_BUGGY
Definition: rig.h:350
@ RIG_STATUS_UNTESTED
Definition: rig.h:347
@ RIG_STATUS_BETA
Definition: rig.h:348
@ RIG_STATUS_ALPHA
Definition: rig.h:346
@ RIG_SPECTRUM_MODE_CENTER_SCROLL
Definition: rig.h:1650
@ RIG_SPECTRUM_MODE_FIXED_SCROLL
Definition: rig.h:1651
@ RIG_SPECTRUM_MODE_FIXED
Definition: rig.h:1649
@ RIG_SPECTRUM_MODE_CENTER
Definition: rig.h:1648
@ RIG_MTYPE_PRIO
Definition: rig.h:1505
@ RIG_MTYPE_EDGE
Definition: rig.h:1500
@ RIG_MTYPE_MEM
Definition: rig.h:1499
@ RIG_MTYPE_CALL
Definition: rig.h:1501
@ RIG_MTYPE_SAT
Definition: rig.h:1503
@ RIG_MTYPE_MEMOPAD
Definition: rig.h:1502
@ RIG_MTYPE_NONE
Definition: rig.h:1498
@ RIG_MTYPE_BAND
Definition: rig.h:1504
int locator2longlat(double *longitude, double *latitude, const char *locator)
Convert QRA locator (Maidenhead grid square) to Longitude/Latitude.
Definition: locator.c:454
int longlat2locator(double longitude, double latitude, char *locator, int pair_count)
Convert longitude/latitude to QRA locator (Maidenhead grid square).
Definition: locator.c:548
Calibration table struct for float values.
Definition: rig.h:1602
float val
Definition: rig.h:1606
struct cal_table_float::@4 table[HAMLIB_MAX_CAL_LENGTH]
int size
Definition: rig.h:1603
int raw
Definition: rig.h:1605
Calibration table struct.
Definition: rig.h:1572
int val
Definition: rig.h:1576
struct cal_table::@3 table[HAMLIB_MAX_CAL_LENGTH]
int raw
Definition: rig.h:1575
int size
Definition: rig.h:1573
Memory channel list definition.
Definition: rig.h:1522
int startc
Definition: rig.h:1523
chan_type_t type
Definition: rig.h:1525
channel_cap_t mem_caps
Definition: rig.h:1527
int endc
Definition: rig.h:1524
Channel capability definition.
Definition: rig.h:1450
unsigned tx_vfo
Definition: rig.h:1463
unsigned tx_freq
Definition: rig.h:1458
unsigned mode
Definition: rig.h:1455
unsigned dcs_code
Definition: rig.h:1473
unsigned rit
Definition: rig.h:1467
unsigned dcs_sql
Definition: rig.h:1474
unsigned rptr_offs
Definition: rig.h:1465
unsigned bank_num
Definition: rig.h:1451
setting_t levels
Definition: rig.h:1470
unsigned width
Definition: rig.h:1456
unsigned rptr_shift
Definition: rig.h:1464
unsigned tx_width
Definition: rig.h:1460
unsigned ctcss_sql
Definition: rig.h:1472
unsigned tx_mode
Definition: rig.h:1459
unsigned freq
Definition: rig.h:1454
setting_t funcs
Definition: rig.h:1469
unsigned ctcss_tone
Definition: rig.h:1471
unsigned ext_levels
Definition: rig.h:1478
unsigned vfo
Definition: rig.h:1452
unsigned ant
Definition: rig.h:1453
unsigned split
Definition: rig.h:1462
unsigned scan_group
Definition: rig.h:1475
unsigned flags
Definition: rig.h:1476
unsigned tuning_step
Definition: rig.h:1466
unsigned xit
Definition: rig.h:1468
unsigned channel_desc
Definition: rig.h:1477
Channel structure.
Definition: rig.h:1406
shortfreq_t tuning_step
Definition: rig.h:1424
rmode_t mode
Definition: rig.h:1412
tone_t ctcss_tone
Definition: rig.h:1429
pbwidth_t tx_width
Definition: rig.h:1417
vfo_t vfo
Definition: rig.h:1409
value_t levels[64]
Definition: rig.h:1428
shortfreq_t rptr_offs
Definition: rig.h:1423
vfo_t tx_vfo
Definition: rig.h:1420
tone_t dcs_code
Definition: rig.h:1431
setting_t funcs
Definition: rig.h:1427
struct ext_list * ext_levels
Definition: rig.h:1436
tone_t ctcss_sql
Definition: rig.h:1430
shortfreq_t xit
Definition: rig.h:1426
int bank_num
Definition: rig.h:1408
pbwidth_t width
Definition: rig.h:1413
freq_t freq
Definition: rig.h:1411
rptr_shift_t rptr_shift
Definition: rig.h:1422
shortfreq_t rit
Definition: rig.h:1425
char channel_desc[HAMLIB_MAXCHANDESC]
Definition: rig.h:1435
rmode_t tx_mode
Definition: rig.h:1416
split_t split
Definition: rig.h:1419
freq_t tx_freq
Definition: rig.h:1415
ant_t ant
Definition: rig.h:1410
unsigned int flags
Definition: rig.h:1434
int scan_group
Definition: rig.h:1433
int channel_num
Definition: rig.h:1407
tone_t dcs_sql
Definition: rig.h:1432
Configuration parameter structure.
Definition: rig.h:756
const char * combostr[RIG_COMBO_MAX]
Definition: rig.h:770
const char * tooltip
Definition: rig.h:760
struct confparams::@0::@2 c
const char * dflt
Definition: rig.h:761
float min
Definition: rig.h:765
token_t token
Definition: rig.h:757
float step
Definition: rig.h:767
const char * label
Definition: rig.h:759
float max
Definition: rig.h:766
const char * name
Definition: rig.h:758
struct confparams::@0::@1 n
enum rig_conf_e type
Definition: rig.h:762
union confparams::@0 u
Extension attribute definition.
Definition: rig.h:1389
token_t token
Definition: rig.h:1390
value_t val
Definition: rig.h:1391
Filter definition.
Definition: rig.h:1357
rmode_t modes
Definition: rig.h:1358
pbwidth_t width
Definition: rig.h:1359
Frequency range.
Definition: rig.h:1290
freq_t startf
Definition: rig.h:1291
freq_t endf
Definition: rig.h:1292
int low_power
Definition: rig.h:1294
char * label
Definition: rig.h:1298
ant_t ant
Definition: rig.h:1297
int high_power
Definition: rig.h:1295
vfo_t vfo
Definition: rig.h:1296
rmode_t modes
Definition: rig.h:1293
level/parm granularity definition
Definition: rig.h:1557
value_t max
Definition: rig.h:1559
value_t step
Definition: rig.h:1560
value_t min
Definition: rig.h:1558
Definition: network.c:126
Rig cache data.
Definition: rig.h:2268
Callback functions and args for rig event.
Definition: rig.h:2491
rig_ptr_t mode_arg
Definition: rig.h:2495
ptt_cb_t ptt_event
Definition: rig.h:2498
vfo_cb_t vfo_event
Definition: rig.h:2496
spectrum_cb_t spectrum_event
Definition: rig.h:2504
mode_cb_t mode_event
Definition: rig.h:2494
rig_ptr_t freq_arg
Definition: rig.h:2493
rig_ptr_t spectrum_arg
Definition: rig.h:2505
rig_ptr_t ptt_arg
Definition: rig.h:2499
rig_ptr_t dcd_arg
Definition: rig.h:2501
dcd_cb_t dcd_event
Definition: rig.h:2500
rig_ptr_t pltune_arg
Definition: rig.h:2503
pltune_cb_t pltune
Definition: rig.h:2502
rig_ptr_t vfo_arg
Definition: rig.h:2497
freq_cb_t freq_event
Definition: rig.h:2492
Spectrum scope averaging modes.
Definition: rig.h:1658
Represents a single line of rig spectrum scope FFT data.
Definition: rig.h:1675
size_t spectrum_data_length
Definition: rig.h:1691
freq_t low_edge_freq
Definition: rig.h:1688
int data_level_min
Definition: rig.h:1678
int id
Definition: rig.h:1676
enum rig_spectrum_mode_e spectrum_mode
Definition: rig.h:1683
double signal_strength_max
Definition: rig.h:1681
freq_t center_freq
Definition: rig.h:1685
freq_t span_freq
Definition: rig.h:1686
double signal_strength_min
Definition: rig.h:1680
unsigned char * spectrum_data
Definition: rig.h:1692
int data_level_max
Definition: rig.h:1679
freq_t high_edge_freq
Definition: rig.h:1689
Spectrum scope.
Definition: rig.h:1638
Rig state containing live data and customized fields.
Definition: rig.h:2353
int auto_power_on
Definition: rig.h:2426
int transaction_active
Definition: rig.h:2399
int attenuator[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2382
int vfo_opt
Definition: rig.h:2425
int twiddle_rit
Definition: rig.h:2438
setting_t has_set_parm
Definition: rig.h:2389
rmode_t mode_list
Definition: rig.h:2413
int async_data_enabled
Definition: rig.h:2406
shortfreq_t max_rit
Definition: rig.h:2375
freq_t lo_freq
Definition: rig.h:2419
int power_max
Definition: rig.h:2436
gran_t parm_gran[64]
Definition: rig.h:2392
freq_range_t rx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2364
vfo_t rx_vfo
Definition: rig.h:2440
rmode_t current_mode
Definition: rig.h:2409
setting_t has_set_func
Definition: rig.h:2385
int uplink
Definition: rig.h:2423
rig_ptr_t obj
Definition: rig.h:2404
int twiddle_state
Definition: rig.h:2439
struct filter_list filters[HAMLIB_FLTLSTSIZ]
Definition: rig.h:2369
pbwidth_t current_width
Definition: rig.h:2411
int ptt_share
Definition: rig.h:2433
rig_ptr_t priv
Definition: rig.h:2403
freq_range_t tx_range_list[HAMLIB_FRQRANGESIZ]
Definition: rig.h:2365
freq_t current_freq
Definition: rig.h:2408
hamlib_port_t dcdport
Definition: rig.h:2359
time_t twiddle_time
Definition: rig.h:2420
vfo_t tx_vfo
Definition: rig.h:2412
int deprecated_itu_region
Definition: rig.h:2363
int power_min
Definition: rig.h:2435
double vfo_comp
Definition: rig.h:2361
setting_t has_set_level
Definition: rig.h:2387
shortfreq_t max_xit
Definition: rig.h:2376
hamlib_port_t rigport
Definition: rig.h:2357
int power_now
Definition: rig.h:2434
int twiddle_timeout
Definition: rig.h:2421
int poll_interval
Definition: rig.h:2407
unsigned char disable_yaesu_bandselect
Definition: rig.h:2437
int auto_power_off
Definition: rig.h:2428
setting_t has_get_parm
Definition: rig.h:2388
int preamp[HAMLIB_MAXDBLSTSIZ]
Definition: rig.h:2381
vfo_t current_vfo
Definition: rig.h:2400
int auto_disable_screensaver
Definition: rig.h:2430
int comm_state
Definition: rig.h:2402
int vfo_list
Definition: rig.h:2401
setting_t has_get_level
Definition: rig.h:2386
setting_t has_get_func
Definition: rig.h:2384
int transmit
Definition: rig.h:2416
ann_t announces
Definition: rig.h:2379
cal_table_t str_cal
Definition: rig.h:2371
shortfreq_t max_ifshift
Definition: rig.h:2377
gran_t level_gran[64]
Definition: rig.h:2391
hamlib_port_t pttport
Definition: rig.h:2358
struct tuning_step_list tuning_steps[HAMLIB_TSLSTSIZ]
Definition: rig.h:2367
The Rig structure.
Definition: rig.h:2519
struct rig_callbacks callbacks
Definition: rig.h:2522
struct rig_state state
Definition: rig.h:2521
struct rig_caps * caps
Definition: rig.h:2520
Tuning step definition.
Definition: rig.h:1322
rmode_t modes
Definition: rig.h:1323
shortfreq_t ts
Definition: rig.h:1324
Universal approach for passing values.
Definition: rig.h:879
char * s
Definition: rig.h:882
float f
Definition: rig.h:881
const char * cs
Definition: rig.h:883
signed int i
Definition: rig.h:880